ASP.NET 控制器基类 User.Identity.Name

发布于 2024-07-11 15:48:19 字数 297 浏览 7 评论 0原文

这篇文章中所述,我创建了一个抽象基本控制器类以便能够将数据从控制器传递到 master.page。 在本例中,我想在数据库中查找用户,查询 User.Identity.Name (仅当他登录时)。

但是,我注意到在这个抽象基类中,User 属性始终为 null。 我需要做什么才能使其正常工作?

多谢

As described in this post, I created an abstract base controller class in order to be able to pass data from a controller to master.page. In this case, I want to lookup a user in my db, querying for User.Identity.Name (only if he is logged in).

However, I noticed that in this abstract base class the User property is always null. What do I have to do to get this working?

Thanks a lot

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

左秋 2024-07-18 15:48:19

正如 Paco 所建议的,视图数据只有在您尝试使用它之后才会初始化。

尝试重写 Controller.Initialize() :

public abstract class ApplicationController : Controller
{
    private IUserRepository _repUser;

    public ApplicationController()
    {
    }

    protected override void Initialize(System.Web.Routing.RequestContext requestContext)
    {
        base.Initialize(requestContext);

        _repUser = RepositoryFactory.getUserRepository();
        var loggedInUser = _repUser.FindById(User.Identity.Name);
        ViewData["LoggedInUser"] = loggedInUser;
    }
}

As Paco suggested, the viewdata isn't initialized till after you are trying to use it.

Try overriding Controller.Initialize() instead:

public abstract class ApplicationController : Controller
{
    private IUserRepository _repUser;

    public ApplicationController()
    {
    }

    protected override void Initialize(System.Web.Routing.RequestContext requestContext)
    {
        base.Initialize(requestContext);

        _repUser = RepositoryFactory.getUserRepository();
        var loggedInUser = _repUser.FindById(User.Identity.Name);
        ViewData["LoggedInUser"] = loggedInUser;
    }
}
一花一树开 2024-07-18 15:48:19

要使用该用户,您应该从以下位置获取当前页面

HttpContext.Current.User.Identity.Name

To use the user, you should get the current page from

HttpContext.Current.User.Identity.Name
昔日梦未散 2024-07-18 15:48:19

通过在 web.config 中设置 Windows 身份验证,您可以通过 User.Identity.Name 获取用户

By setting authentication to Windows in web.config, you can get the user with User.Identity.Name

乖不如嘢 2024-07-18 15:48:19

我在静态 Utlilites 类上使用 Page 类。 像那样;

Page P = (Page)HttpContext.Current.Handler;

我可以通过 P 对象获取当前请求页面的所有属性。

I use Page class on my static Utlilites classes. Like that;

Page P = (Page)HttpContext.Current.Handler;

and i can get all properties via the P object for the current requested page..

掀纱窥君容 2024-07-18 15:48:19

你有没有尝试过这个:
ControllerContext.HttpContext.Current.User.Identity.Name?

Have you tried this:
ControllerContext.HttpContext.Current.User.Identity.Name?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文