如何在Asp.Net Core 2.0中访问当前ApplicationUser(或UserManager)ActionFilter?
我试图锁定整个应用程序,直到用户接受EULA(最终用户许可协议),更改密码并填写所需的个人信息为止。
public class ApplicationUser : IdentityUser
{
...
public DateTime? DateEULAAccepted { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
这是ActionFilter代码:
public class ProfileRequiredActionFilter : IActionFilter
{
public void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.HttpContext.User.Identity.IsAuthenticated)
{
var CurUser = UserManager<ApplicationUser>.GetUserAsync(filterContext.HttpContext.User);
...
if (CurUser.Result.DateEULAAccepted.ToString() == null)
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { controller = "Account", action = "AgreeToEULA" }));
}
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的实例ActionFilter中Startup > ConfigureServices,如下所示:
...
services.AddMvc(options …Run Code Online (Sandbox Code Playgroud)