【发布时间】:2017-07-11 11:07:50
【问题描述】:
我需要进行基于用户的授权,而不是基于角色的授权。例如,我的项目中有 10 个模块,当我添加用户时,我可以授予用户权限,他们可以访问所有模块。我可以看到基于角色授权的教程。有什么基于用户的授权吗?
【问题讨论】:
我需要进行基于用户的授权,而不是基于角色的授权。例如,我的项目中有 10 个模块,当我添加用户时,我可以授予用户权限,他们可以访问所有模块。我可以看到基于角色授权的教程。有什么基于用户的授权吗?
【问题讨论】:
如果我正确理解了您的问题,那就很简单了
AuthorizeAttribute.Users Property
获取或设置有权访问控制器或操作方法的用户。
例子:
[Authorize(Users="Alice,Bob")]
public class RestrictedContentController : Controller
{
. . .
}
【讨论】:
开箱即用并没有明确的用途,但有了其他一切,你可以做你想做的事。
如果您有类似这样的业务逻辑或数据库概念:
表模块(Id、名称、ModuleCodeName 等...) 表用户(ID、名称等...) 表 UserAllowedTouseModule(UserId、ModuleId、CreatedOn、ValidFromDateTime、ValidToDateTime 等...
几种方法:
每个控制器/区域,实现或使用一个抽象的 baseController 类,并使用一个接收 ModuleCodeName 的构造函数(值可以来自字符串、枚举等......)。 然后你有一个验证或以下类型:
等等。我想你明白了。
对于这种类似的逻辑,请查看以下问题/答案: MVC - Redirect inside the Constructor
【讨论】: