Asp.Ner MVC中基于用户的授权

时间:2017-07-11 11:07:51

标签: asp.net-mvc authorization

我需要进行基于用户的授权,而不是基于角色的授权。例如,我的项目中有10个模块,当我添加用户时,我可以向用户授予权限,他们可以访问所有模块。我可以看到基于角色的授权的教程。基于用户的授权有什么用吗?

2 个答案:

答案 0 :(得分:0)

开箱即用,并没有为此做出明确的准备,但除了其他一切,你可以做你想要的。

如果你有像这样的业务逻辑或数据库概念:

表模块(Id,Name,ModuleCodeName等) 表用户(ID,名称等) 表UserAllowedTouseModule(UserId,ModuleId,CreatedOn,ValidFromDateTime,ValidToDateTime等......

几种方法:

每个控制器/区域,实现或使用absctract baseController类,并使用接收ModuleCodeName的构造函数(值可以来自字符串,枚举等...)。 然后你有一个验证或以下类型:

  • 由于用户已通过身份验证,您知道其ID,您可以点击数据库以验证他是否有权访问该模块(基于收到的ModuleCodeName),如果没有,则将其重定向到其他位置。
  • 可以通过缓存值进行验证(而不是一直到数据库)。
  • 或者您也可以将这些值添加到登录时刻的自定义身份验证属性中。
  • 等......我想你明白了。

    对于这个类似的逻辑,请看看以下问题/答案: MVC - Redirect inside the Constructor

答案 1 :(得分:0)

如果我理解你的问题,这很简单

<强> AuthorizeAttribute.Users Property

获取或设置有权访问控制器或操作方法的用户。

示例:

[Authorize(Users="Alice,Bob")]
public class RestrictedContentController : Controller
{
    . . .
}