根据当前会话和计划限制网址

时间:2013-02-07 01:24:42

标签: c# asp.net-mvc razor asp.net-mvc-routing

我知道这可能会受到项目设置和其他一些事情的影响,但我只是想知道在我的案例中最佳做法是什么。

我有一个有3个计划的网络应用程序:Free,Pro和Prem。在免费计划中,我想将用户限制为某些网址。

用户可以更改计划,因此如果他们坚持使用免费计划,那么他们就不会看到其他网址。但如果他们升级然后降级,他们可能会访问其他一些URL。

在我的所有控制器中,我都能获得有关用户的所有信息,例如他们所处的计划以及他们试图查看的网址。

我对这类事情并不是很熟悉,所以我的第一个想法就是在URL的基础上控制它。例如,在我的控制器操作中,免费计划用户无法查看,检查他们所处的计划,是否其免费计划将其重定向到404页面或其他任何内容。

这是一个很简单的方法,但我只是想知道是否有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

听起来你想要一个[Authorize] attribute添加到需要访问级别大于你的自由级别的控制器方法,例如:

public ActionResult ViewForAllUsers() {
    return View();
}

[Authorize(Roles = "Prem, Pro")]
public ActionResult ViewForPremAndPro() {
    return View();
}

[Authorize(Roles = "Pro")]
public ActionResult ViewForProOnly() {
    return View();
}