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

问题描述 投票:0回答:2

代替基于角色的授权,我需要基于用户的授权。例如,我的项目中有10个模块,当我添加用户时,我可以授予用户权限,因为他们可以访问所有模块。我可以看到有关基于角色的授权的可能教程。是否有任何基于用户的授权?

asp.net-mvc authorization
2个回答
0
投票

开箱即用,没有明确的内容,但是有了其他所有功能,您就可以做您想要的事情。

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

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

几种方法:

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

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

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


0
投票

如果我正确理解了您的问题,这很简单

AuthorizeAttribute.Users Property

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

示例:

[Authorize(Users="Alice,Bob")]
public class RestrictedContentController : Controller
{
    . . .
}
© www.soinside.com 2019 - 2024. All rights reserved.