public class LockoutFilterAttribute : FilterAttribute, IAuthenticationFilter
{
public void OnAuthentication(AuthenticationContext filterContext)
{
var pUser = filterContext.HttpContext.User;
var user = //Логика для поиска пользователя;
if (user.LockoutDate > DateTime.UtcNow)
{
filterContext.Result = new HttpStatusCodeResult(HttpStatusCode.Forbidden);
}
}
public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext)
{
var user = filterContext.HttpContext.User;
var user = //Логика для поиска пользователя;
if (user.LockoutDate > DateTime.UtcNow)
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary {
{"controller", "Home"},
{"action", "LockoutAction"}
});
}
}
}
它可能看起来像这样......
剩下的就是将其添加到全局过滤器或必要的路由中。缺点是它是一个重定向。如果您想将用户留在同一页面上,您需要以下内容: