[英]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.