0

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

我有一个有 3 个计划的网络应用程序:免费、专业和高级。在免费计划中,我想将用户限制为某些 URL。

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

在我所有的控制器中,我都有我需要的关于用户的所有信息,例如他们正在执行的计划以及他们试图查看的 URL。

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

这是一种足够简单的方法,但我只是想知道是否有更好的方法?

4

1 回答 1

2

听起来您想向需要访问级别高于您的免费级别的控制器方法添加一个[Authorize]属性,例如:

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

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

[Authorize(Roles = "Pro")]
public ActionResult ViewForProOnly() {
    return View();
}
于 2013-02-07T01:55:52.807 回答