Возникла проблема с выполнением блокировки пользователей на сайте. А именно, нет понимания как сделать автоматическое открытие страницы с информацией о блокировке на ресурсе. Т.е если пользователь был забанен, то вместо личного кабинета, сообщений, домашней страницы и т.д ему при открытии сайта будет открываться именно view с блокировкой. Подскажите пожалуйста в какую сторону копать с такой проблемой?
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"}
});
}
}
}
Примерно так будет выглядеть, наверное...
Останется только добавить это к глобальным фильтрам, ну или к нужным маршрутам. Минус в том, что это редирект. Если необходимо оставлять пользователя на этой же странице нужно что-то вроде:
filterContext.Result = new ViewResult{ViewName=..., Model=...};
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок