2012-01-09 2 views
0

Я только что начал разработку полнофункционального веб-приложения с использованием среды ASP.NET MVC 3. Я начинаю разработку MVC 3.ASP.NET MVC 3 + Обработка события приема HTTP-запроса


Мне нужен способ реализовать следующую логику:

Когда мое приложение получает запрос HTTP из браузера Я хочу, чтобы проверить, если сессия действительна с этим браузером.

Если нет, я хочу выполнить метод действия индекса моего контроллера Connection. Метод действия индекса возвращает страницу HTML5 в браузер, которая позволяет пользователю аутентифицировать себя в приложении.

Если сессия действительна, я хочу проверить, сохранены ли переменные сеанса IdUtilSession и IdSocSession. Если обе переменные сеанса не сохраняются, я хочу выполнить метод действия индекса моего контроллера Connection.


Я прочитал некоторую документацию MSDN об управлении переменными сеанса. Я думаю, что могу управлять переменными сеанса в своем приложении.

Я хочу знать, какое событие мне нужно обрабатывать - «Когда мое приложение получает HTTP-запрос». Я прочитал следующую страницу документации MSDN в жизненном цикле приложения ASP.NET: http://msdn.microsoft.com/en-us/library/ms178473.aspx Последовательность событий запускается во время обработки запроса от Нужно ли обрабатывать одно из этих событий в моем файле Global.asax?

Спасибо заранее для вашей будущей помощи

+0

Возможно, сначала попробуйте Ручную лабораторию? http://msdn.microsoft.com/en-us/VS2010TrainingCourse_ASPNETMVC3Fundamentals – rene

ответ

1

Более MVCish путь для достижения этой цели является написать собственный атрибут авторизовать (вместо того, чтобы полагаться на события, которые чаще всего используются в классическом ASP.NET, а не ASP.NET MVC):

public class MyAuthorizeAttribute : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     var authorized = base.AuthorizeCore(httpContext); 
     if (!authorized) 
     { 
      return false; 
     } 

     var session = httpContext.Session; 
     return session["IdUtilSession"] != null && 
       session["IdSocSession "] != null; 
    } 
} 

, а затем вместо того, чтобы использовать [Authorize] атрибут по умолчанию использовать пользовательские [MyAuthorize] атрибута.

Насколько I want to execute the Index action method of my Connection controller часть касается, вы можете установить атрибут loginUrl в <forms> тега в вашем web.config, чтобы указать на соответствующую URL.