Я пытаюсь выполнить специальную авторизацию, поэтому я создал контроллер, переопределяющий метод OnAuthorization
. Я также применил атрибут Authorize
к этому контроллеру.
Вопрос в том, почему метод OnAuthorization
называется ПЕРЕД началом процесса аутентификации основных форм?
Я хотел бы авторизовать пользователя после его аутентификации. Я что-то пропустил?
Вот код:
[Authorize]
public class AuthorizationController : Controller
{
protected override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
if (filterContext == null)
{
throw new ArgumentNullException("filterContext");
}
List<string> allowedControllers = new List<string>() { "SecurityController" };
List<string> allowedActions = new List<string>() { "Index" };
string controllerName = filterContext.Controller.GetType().Name;
string actionName = filterContext.ActionDescriptor.ActionName;
if (!allowedControllers.Contains(controllerName)
|| !allowedActions.Contains(actionName))
{
filterContext.Result = View("UnauthorizedAccess");
}
}
}
Контроллер, с которым я тестировал, выглядит примерно так:
public class SecurityController : AuthorizationController
{
public ActionResult Index()
{
return View();
}
public ActionResult AnotherIndex()
{
return View();
}
}