繁体   English   中英

如何从控制器获取User.Identity.Name?

[英]How to get User.Identity.Name from a controller?

我想在所有视图中都包含一些viewData信息,因此我正在关注本教程

http://www.asp.net/LEARN/mvc/tutorial-13-cs.aspx

因此,我制作了自己的applicationController,但需要从用户那里获取UserName。

但是,当我在构造函数中执行“ HttpContext.User.Identity.Name”时,它始终为null。 我不确定为什么。

谢谢

好的,基本的事情就解决了。

  protected override void Initialize(RequestContext requestContext)
    {
        base.Initialize(requestContext);
        Guid userId = coursesS.GetUserId(HttpContext.User.Identity.Name);
    }

这样看来可行。 现在唯一的事情是它似乎经历了两次。 就像我登录一样,它似乎做了两次。 我正在猜测,因为这就像将代码放入每个动作中一样。 当我通过在控制器中调用它们在网站上加载所有这些部分视图时,便会执行此操作。

太多了,我应该缓存它,但是我不确定如何缓存。

HttpContext.Current.User.Identity.Name  

请注意您的呼叫中缺少的.Current

尝试初始化ApplicationController的Initialize方法中的内容,但HttpContext在构造函数中不可用。 确保调用base.Initialize(),否则您会得到一些有趣的结果。

您要访问的哪个特定属性为null? 您可能需要在检查Name属性之前检查User.Identity.IsAuthenticated == true。 另外,请确保已启用表单身份验证,并且您确实确实已经首先登录了该站点。

采用

Page.User.Identity.Name

您在控制器中,请使用以下命令:

ControllerContext.HttpContext.Current.User.Identity.Name

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM