1

我正在开发 MVC 3 Intranet 应用程序(Windows 身份验证)。我想在我的控制器操作中使用当前登录用户的用户名。我尝试了很多变化,但无法获得用户名。我尝试Environment.Username在调试模式下使用它运行良好,但是在部署时它提供了池名称而不是用户名。

控制器动作。

  public ActionResult Index()
        {
            LoggedUser usr = new LoggedUser();
            var aa = usr.User;
        }

登录用户

public class LoggedUser : Controller
    {
        public LoggedUser()
        {

        }
    }

我正在关注这篇文章,但无法使其工作在 ASP.NET MVC3 Intranet 应用程序中获取登录的用户名

有什么帮助吗??

4

3 回答 3

2

要检索当前登录的用户名,您可以使用User.Identity.Name操作中的属性:

public ActionResult Index()
{
    string usr = User.Identity.Name;
    ...
}

您在问题中显示的代码不正确。您已经定义了一个并且正在某个动作LoggedUser中实例化这个控制器。Index您不应该手动实例化控制器。这是框架的责任。

于 2013-02-25T10:02:01.700 回答
1

如果您想使用需要用户名的控制器级别变量,您可以覆盖 OnActionExecuting 事件,您可以在其中访问经过身份验证的用户 ID。为了谨慎起见,您可能必须检查 user.identity 是否为 null。

    Obj myObj;
    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        myObj = new Obj(User.Identity.Name);
        base.OnActionExecuting(filterContext);
    }
于 2017-04-02T16:04:40.080 回答
0

整个讨论是关于真正在做什么,听起来像是权限的“状态”,在访问方法/函数时,确实听起来像是一个更大的概念,什么可以像对象一样存在于控制器中,使这种类型的类成为“状态概念” ...所有关于是否存在于模型/视图/控制器中的讨论,都可以通过在参数交换中使用 ID/Object 来解决,但是因为它是访问数据的需要,所以不是控制器的工作,而是 dbms 的工作和为数据模型的内存结构构建数据访问,以任何形式/模型/类的结构建模“想法/连接/任务”的类的作业。所有关于模型/控制器的讨论都是关于效率的,而效率在所有情况下都是 DBMS。

于 2016-09-23T23:02:45.957 回答