我目前正在开发一个ASP.NET MVC2应用程序,并且想知道实现以下内容的最佳方法:
登录网站的每位用户都需支付会员费,该费用为X天。我在数据库中记录会员付款和到期日。
我希望所有用户都可以登录,即使他们的会员资格已经过期。但是,某些控制器/操作将超出其成员资格已过期的成员。
所以我的问题是,当会员资格到期时,重定向尝试访问这些网页的用户的最佳方法是什么?
我真的不想调用一个方法来检查我不希望过期成员访问的每个操作的成员资格状态(尽管这是我必须要做的唯一方法)。
我想到了一个继承自System.Web.Mvc.ViewPage
的自定义ViewPage,我会覆盖OnInit
函数并检查成员资格状态并在必要时重定向。
有人可以给我他们对上述内容的看法,或者让我知道是否有更好,更易维护的解决方案?
答案 0 :(得分:2)
需要具有[授权]属性和自定义角色的成员资格的安全控制器或操作方法:
[Authorize(Roles="ActiveMembership")]
public ActionResult SomeMembershipContent()
{
}
安全的控制器或操作方法只需要[Authorize]属性且无角色:
[Authorize()]
public ActionResult SomeSimpleContent()
{
}
然后,无论您使用哪种会员提供者或自定义登录解决方案,如果他们是付费会员,都会为用户提供额外的角色。