лучшее место в MVC для истечения срока действия пользователя - PullRequest
3 голосов
/ 22 февраля 2010

У меня есть веб-приложение ASP.NET MVC, на котором установлена ​​действительно базовая система подписки.

Мой вопрос касается того, где лучше всего реализовать дату окончания подписки. На данный момент в Site.master находится следующий код:

    if (Profile.expires < DateTime.Today)
    {
        FormsAuthentication.SignOut();
        FormsAuthentication.RedirectToLoginPage();
    }

Таким образом, когда кто-либо переходит на любую страницу, этот код проверяет, не истек ли срок действия его имени пользователя.

Я, очевидно, собираюсь переместить этот код со страницы Site.master в Model.Helpers (или что-то в этом роде), однако мне было интересно, должен ли код по-прежнему вызываться откуда-то еще (в контексте с Шаблон MVC). очевидно, я перенесу код из site.master в, например, Model.Helpers.Validate ()

оттуда возможности, на мой взгляд, таковы:

  • вызов метода с сайта site.master
  • реализовать метод в файле global.asax, например, с ограничением маршрута.
  • реализовать метод каким-либо образом через атрибуты для всех действий (не уверен, возможно ли это или как это сделать)

Кто-нибудь может подсказать, какой путь может быть лучшим? Если есть другая альтернатива, наиболее точно соответствующая шаблону проектирования MVC, пожалуйста, дайте мне знать. Я действительно хотел бы сделать это "правильным" способом:)

Ответы [ 2 ]

3 голосов
/ 22 февраля 2010

Я обычно помещаю это в базовый контроллер, переопределяя метод onAuthorization.

0 голосов
/ 22 февраля 2010

Вы также можете использовать Application.AuthenticateRequest внутри файла Global.asax. Кроме того, переместите весь код авторизации в службу (AuthorizationService).

var authorizationService = new AuthorizationService(); 

if(authorizationService.IsSubscribtionExpiredForUser(user)) 
{
   // redirect to login page 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...