Является ли IAuthorizationFilter в сочетании с атрибутом предпочтительным способом проверки, вошел ли пользователь в систему до того, как контроллер запустит свой курс?
Поскольку я новичок в MVC, я пытался понять, как справляться с ситуациями в WebForms. Тот, с которым я столкнулся вчера, проверяет, может ли пользователь просматривать страницу или нет, в зависимости от того, вошел ли он в систему или нет. Когда я брал свой проект и «превращал» его в проект MVC, я немного не мог понять, как решить эту ситуацию.
В версии WebForms я использовал базовую страницу, чтобы проверить, вошел ли пользователь в систему:
if (State.CurrentUser == null)
{
State.ReturnPage = SiteMethods.GetCurrentUrl();
Response.Redirect(DEFAULT_LOGIN_REDIRECT);
}
Что я нашел, так это:
[AttributeUsage(AttributeTargets.Method)]
public sealed class RequiresAuthenticationAttribute : ActionFilterAttribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext context)
{
if (State.CurrentUser == null)
{
context.Result =
new RedirectToRouteResult
(
"Login",
new RouteValueDictionary
(
new
{
controller = "Login",
action = "Error",
redirect = SiteMethods.GetCurrentUrl()
}
)
);
}
}
}
Тогда я просто бью этот атрибут по любому методу контроллера отдачи, и жизнь хороша. Вопрос в том, является ли это предпочтительным и / или лучшим способом сделать это?