我有一个ASP.NET MVC网络应用程序,它上面有一个非常基本的订阅系统。
我的问题涉及实施订阅结束日期的最佳位置。目前,以下代码驻留在Site.master中:
if (Profile.expires < DateTime.Today)
{
FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage();
}
因此,每当有人点击任何页面时,此代码都会检查用户名是否已过期。
我显然要将此代码移出Site.master页面并移入Model.Helpers(或类似的东西),但是我想知道代码是否应该仍然从其他地方调用(保持在上下文中) MVC模式)。显然我会将代码移出site.master并进入,例如,Model.Helpers.Validate()
从那里开始,正如我所看到的那样,可能性是:任何人都可以建议哪种方式最好?如果有另一个最接近MVC设计模式的替代方案,请告诉我。我真的很想以'正确'的方式做到这一点:)
答案 0 :(得分:3)
我通常通过覆盖onAuthorization方法将其放入基本控制器中。
答案 1 :(得分:0)
您还可以在Global.asax文件中使用Application.AuthenticateRequest。此外,将所有授权代码移动到服务(AuthorizationService)中。
var authorizationService = new AuthorizationService();
if(authorizationService.IsSubscribtionExpiredForUser(user))
{
// redirect to login page
}