MVC3 - 在Controller基类中访问用户上下文

时间:2011-10-10 21:11:21

标签: asp.net-mvc-3 razor

我在视图中有以下代码

@User.Identity.Name

工作正常。

自定义控制器基类中的相同代码不起作用。 User对象为null

public class AdminBaseController : Controller
    {
        public AdminBaseController()
        {    
            string userId = User.Identity.Name;                
             //if(!AnAdmin)
                 //redirect to UnauthorizedPage

我希望使用此基类代替System.Web.MVC.Controller作为所有管理屏幕的基础。这样我就可以重定向任何不是管理员的人(NTLM身份验证)。

为何空?我如何进入我的背景? (HttpContext和名为ControllerContext的内容也为空)

<小时/> 经过一些修改后,Controller构造函数中的内容为null。行动方法工作正常。问题仍然存在,但似乎我需要帮助选择其他实施方案。

2 个答案:

答案 0 :(得分:4)

您应该使用Authorization filterASP.NET MVC Authorization。另请查看Understanding Action Filters

或者您可以覆盖Controller上的Initialize方法,将初始化User对象。

答案 1 :(得分:0)

我只是尝试访问控制器类中的函数中的“Name”属性。这不是问题,也不是空的。

我最好的猜测是你无法在控制器的构造函数中访问这个对象。