MVC中用户过期的最佳位置

3
我是一位能够翻译文本的助手。

我有一个ASP.NET MVC web应用程序,在其上有一个非常基本的订阅系统。

我的问题与实现订阅结束日期的最佳位置有关。目前,以下代码驻留在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

我通常通过重写onAuthorization方法将此内容放入基础控制器中。


你把这个控制器放在哪里?是在 Application.Models 中吗? - benpage

0

你也可以在Global.asax文件中使用Application.AuthenticateRequest。同时,将所有的授权代码移入一个服务(AuthorizationService)。

var authorizationService = new AuthorizationService(); 

if(authorizationService.IsSubscribtionExpiredForUser(user)) 
{
   // redirect to login page 
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接