В событии Session_Start он вызывает класс authenticate_authorize для возврата объекта AuthResult.Request.RedirectToRoute в Session_Start заставляет сеанс перезапускать
public AuthResult
{
public enumAuthResult Result {get;set;}
public string Controller {get;set;}
public string Action {get;set;}
}
Каков правильный способ вызова действия контроллера без использования переадресации в событии Session_Start?
Должен ли я разделить аутентификацию и авторизацию в событиях Application_AuthenticateRequest и Application_AuthorizeRequest отдельно?
Если аутентификация и авторизация выполняются в отдельных событиях, как передать объект AuthResult событию Session_Start, чтобы он мог правильно перенаправить или перенаправить на контроллер?
Response.RedirectToRoute(AuthResult.Controller, AuthResult.Action);
Response.Redirect(string.Format("{0}/{1}",AuthResult.Controller, AuthResult.Action));
Спасибо. Я пытаюсь сделать аутентификацию и авторизацию один раз в начале приложения, например, запуск сеанса. Использование Authroization Filter заставит меня украсить каждый контроллер этим атрибутом. У нас много приложений на нашем сайте IIS.Я даже планирую написать HttpModule для перехвата запросов на уровне сайта до того, как обработчик MVC будет выполнен, чтобы мы могли систематически внедрять аутентификацию/авторизацию на уровне сайта и не допустить, чтобы каждый разработчик приложения из этой мирской задачи в своем коде приложения. – user266909
Вам не нужно украшать каждое действие контроллера с помощью AuthorizeAttribute. Вы можете зарегистрировать его как глобальный фильтр только один раз в файле FilterConfig. На самом деле, это рекомендуемый способ сделать это, а затем использовать AllowAnonymous atttribute, чтобы выборочно разрешить части вашего сайта, которым не нужна безопасность. – NightOwl888