【问题标题】:How to get User.Identity.Name from a controller?如何从控制器获取 User.Identity.Name?
【发布时间】:2009-10-01 20:25:45
【问题描述】:

我想在我的所有视图中获得一些 viewData 信息,所以我正在学习本教程

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

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

然而,当我在构造函数中执行此“HttpContext.User.Identity.Name”时,它始终为空。我不知道为什么。

谢谢

好吧,基本的东西成功了。

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

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

这么多我应该缓存它,但我不确定如何。

【问题讨论】:

    标签: c# .net asp.net asp.net-mvc


    【解决方案1】:
    HttpContext.Current.User.Identity.Name  
    

    记下您的通话中缺少的 .Current

    【讨论】:

    • 嗯,我可能需要导入一些东西,因为我得到这个:错误 3 'System.Web.HttpContextBase' 不包含 'Current' 的定义并且没有扩展方法 'Current' 接受第一个参数可以找到类型“System.Web.HttpContextBase”(您是否缺少 using 指令或程序集引用?)
    【解决方案2】:

    尝试在 ApplicationController 的 Initialize 方法中初始化东西,HttpContext 在构造函数中不可用。确保调用 base.Initialize() 或者你会得到一些有趣的结果。

    【讨论】:

    • 我在哪里调用这个 base.Initialze()?我不知道把它贴在哪里
    【解决方案3】:

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

    【讨论】:

    • 好点。这些问题中的任何一个都会导致所描述的错误。
    • 用户为空。这就是 null
    • 哦,我已经登录了。如果我拿出那条线并尝试登录,我会转到授权页面。
    【解决方案4】:

    使用

    Page.User.Identity.Name
    

    【讨论】:

    • 为什么投反对票?这个对我有用?虽然如果这意味着我正在学习新东西,我很高兴投反对票......
    • 不知道为什么有人投票给你。我试过了,我得到这个错误:错误3非静态字段、方法或属性'System.Web.UI.Page.User.get'需要对象引用
    • 他不在主页上。他正在创建一个自定义控制器。
    【解决方案5】:

    您在控制器中,因此请使用以下内容:

    ControllerContext.HttpContext.Current.User.Identity.Name
    

    【讨论】:

    • 当我尝试在我的抽象基础控制器中执行此操作时出现此错误。错误 2 非静态字段、方法或属性“System.Web.Mvc.ControllerContext.HttpContext.get”需要对象引用
    • 见上面 Wyatt 的评论。确保调用 base.Initialize()。
    • 我在构造函数中应该把它放在哪里?
    • 它还需要一些参数,我不知道如何传递它想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    相关资源
    最近更新 更多