Я пытаюсь выполнить некоторую настраиваемую авторизацию, поэтому я создал контроллер, перекрывающий метод 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();
}
}