Asp.net mvc Asp.NETMVC中基于用户的授权

Asp.net mvc Asp.NETMVC中基于用户的授权,asp.net-mvc,authorization,Asp.net Mvc,Authorization,我需要进行基于用户的授权,而不是基于角色的授权。例如,我的项目中有10个模块,当我添加用户时,我可以向用户授予权限,用户可以访问这些模块。我可以看5月份关于基于角色授权的教程。有基于用户的授权吗?开箱即用,没有什么cleary可以做到这一点,但有了其他一切,你可以做你想做的事情 如果您有这样的业务逻辑或数据库概念: 表模块(Id、名称、ModuleCodeName等) 表用户(Id、名称等) 表UserAllowedToUserModule(用户ID、ModuleId、CreatedOn、Val

我需要进行基于用户的授权,而不是基于角色的授权。例如,我的项目中有10个模块,当我添加用户时,我可以向用户授予权限,用户可以访问这些模块。我可以看5月份关于基于角色授权的教程。有基于用户的授权吗?

开箱即用,没有什么cleary可以做到这一点,但有了其他一切,你可以做你想做的事情

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

表模块(Id、名称、ModuleCodeName等) 表用户(Id、名称等) 表UserAllowedToUserModule(用户ID、ModuleId、CreatedOn、ValidFromDateTime、ValidToDateTime等)

有几种方法:

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

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

    对于类似的逻辑,请查看以下问题/答案:


    • 如果我正确理解了你的问题,那就很简单了

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

      例如:

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

      感谢您的回复。我们如何在[授权]中动态分配用户属性。如果我要添加一个新用户,他/她必须使用我的控制器。那么该怎么办?我很高兴,简单的一点是,如果您深入了解用户接受逗号分隔的字符串,那么您可以将新添加的用户分配给任何字符串变量并将其分配给users属性。就是这样。如果您想允许所有新添加的用户,只需使用[授权]属性,谢谢