2
在MVC5中,我通过覆盖控制器中的Initialize
方法将当前登录用户的ID初始化为私有文件。获取当前在控制器构造函数中登录的用户ID ASP.NET 5 MVC6
public class BaseControllerConstructor: Constructor
{
protected UserProfile _currentUserProfile;
protected override void Initialize(RequestContext requestContext)
{
base.Initialize(requestContext);
if (User.Identity.IsAuthenticated)
{
_currentUserId = User.Identity.GetUserId();
_currentUserProfile = LoadUserProfile(_currentUserId);
}
}
}
在MVC6控制器中没有Initialize
。
当我尝试在构造函数中获取当前登录用户的ID时,User
和HttpContext
是null
。
public BaseControllerConstructor()
{
// HttpContext is null
string _currentUserId = HttpContext.User.GetUserId();
_currentUserProfile = LoadUserProfile(_currentUserId);
}
我该如何在MVC6中实现这一目标?特别是:如何获取当前登录用户的用户ID,并在BaseControllerConstructor
中初始化_currentUserId
?
然后在控制器的动作只要致电:
class Controller: BaseControllerConstructor
{
public ActionResult Action()
{
foo(_currentUserProfile);
}
}
更新:我解决了这个使用依赖注入。请看下面的答案。