我知道这可能会受到项目设置和其他一些事情的影响,但我只是想知道在我的案例中最佳做法是什么。
我有一个有3个计划的网络应用程序:Free,Pro和Prem。在免费计划中,我想将用户限制为某些网址。
用户可以更改计划,因此如果他们坚持使用免费计划,那么他们就不会看到其他网址。但如果他们升级然后降级,他们可能会访问其他一些URL。
在我的所有控制器中,我都能获得有关用户的所有信息,例如他们所处的计划以及他们试图查看的网址。
我对这类事情并不是很熟悉,所以我的第一个想法就是在URL的基础上控制它。例如,在我的控制器操作中,免费计划用户无法查看,检查他们所处的计划,是否其免费计划将其重定向到404页面或其他任何内容。
这是一个很简单的方法,但我只是想知道是否有更好的方法吗?
答案 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();
}