在 Asp.Net MVC 的主视图中访问当前 IPrinciple

发布于 2024-09-02 12:56:40 字数 321 浏览 1 评论 0原文

我目前有一个抽象控制器类,我的所有控制器都继承自它。 我希望能够在我的母版页中使用当前用户(IPrinciple)对象。 我读到我可以使用我的抽象基本控制器类的构造函数,也就是说我可以做一些类似的事情,

public BaseController()
    {
        ViewData["UserName"] = this.User.Identity.Name;
    }

然后我可以从我的母版页访问 ViewData["UserName"] 等。 我的问题是 this.User 此时为空。 有人知道不同的方法吗?

提前致谢。

I currently have a abstract controller class that I all my controllers inherit from.
I want to be able to use the current user (IPrinciple) object in my master page.
I read that I could use the contructor of my abstract base controller class, that is I could do something like

public BaseController()
    {
        ViewData["UserName"] = this.User.Identity.Name;
    }

I could then access ViewData["UserName"] etc from my master page.
My problem is that this.User is null at this point.
Does anybody know of a different approach?

Thanks in advance.

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

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

发布评论

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

评论(1

樱&纷飞 2024-09-09 12:56:40

您可以编写一个 ActionFilter 并在 OnActionExecuted 中 事件将用户放入 ViewData 中:

public class UserActionFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        base.OnActionExecuted(filterContext);
        filterContext.Controller.ViewData["UserName"] = filterContext.HttpContext.User.Identity.Name;
    }
}

然后使用此属性装饰您的基本控制器:

[UserActionFilter]
public abstract class BaseController: Controller
{ }

You could write an ActionFilter and in the OnActionExecuted event put the user inside ViewData:

public class UserActionFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        base.OnActionExecuted(filterContext);
        filterContext.Controller.ViewData["UserName"] = filterContext.HttpContext.User.Identity.Name;
    }
}

And then decorate your base controller with this attribute:

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