我在视图中有以下代码
@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。行动方法工作正常。问题仍然存在,但似乎我需要帮助选择其他实施方案。
答案 0 :(得分:4)
您应该使用Authorization filter,ASP.NET MVC Authorization。另请查看Understanding Action Filters。
或者您可以覆盖Controller上的Initialize方法,将初始化User对象。
答案 1 :(得分:0)
我只是尝试访问控制器类中的函数中的“Name”属性。这不是问题,也不是空的。
我最好的猜测是你无法在控制器的构造函数中访问这个对象。