【问题标题】:ASP.NET MVC Security Model / Database - What are my options?ASP.NET MVC 安全模型/数据库 - 我有哪些选择?
【发布时间】:2011-02-03 20:07:53
【问题描述】:

我们有几个需要角色/用户/权限安全模型的项目 (ASP.NET MVC)。我们希望将这些数据保存在数据库的表中。您如何建议我们使用我们的 ASP.NET MVC 项目来实现此安全模型?使用自定义授权属性来确定用户是否通过与我们数据库中的数据模型交互来获得授权?

是否有第三方/开源选项可用?

【问题讨论】:

  • 您对内置的会员资格/授权提供程序有疑问吗?如果它们不符合要求,您可以自己实施:msdn.microsoft.com/en-us/library/f1kyba5e.aspx
  • 内置提供程序是否处理权限?例如,用户可能是角色“Guest”的成员,该角色具有“Read”和“Write”权限。在使用角色访问某些文件夹、控制器、方法时,内置提供程序似乎运行良好,但我没有看到任何检查它们是否具有特定权限的东西。我希望能够编写“If UserHasPermission("Delete")”,这将自动确定他们的角色是否具有该权限。我也不确定如何使用他们的管理工具添加权限。

标签: asp.net-mvc security authorization


【解决方案1】:

如果您愿意使用实体框架,可以使用 MVC 的 EF Membership 提供程序。 这里http://efmembership.codeplex.com/

【讨论】:

    【解决方案2】:

    我解决这个问题的方法是反映控制器操作,我仍然使用普通的 asp.net 成员资格提供程序,但是有一个操作表来存储我的所有控制器/操作。

    其次,我创建了一个基本控制器并在基本控制器上添加了授权属性,然后我覆盖了授权“事件”并在那里检查用户是否有权访问该特定操作,我对 onactionexecuting 做了同样的事情。

    【讨论】:

    • 我知道这有点晚了,但你认为你可以详细说明你的观点吗?我正在寻找听起来与您刚才所说的非常接近的东西。
    【解决方案3】:

    我将 Rhino Security 用于复杂的 MVC 站点,我喜欢它。

    http://ayende.com/Blog/archive/2008/01/22/Rhino-Security-Overview-Part-I.aspx

    安全调用最终如下所示:

         permissionBuilderService
                    .Allow("/[Controller]", 1)
                    .For("GAAdmins", 1)
                    .OnEverything()
                    .DefaultLevel()
                    .Save();
    
    authorizationRepository.AssociateUserWith(user, "GAAdmins"); 
    
    
    if (authService.IsAllowed(user, "/[Controller]/[Action]"))
     ...;
    

    【讨论】:

      猜你喜欢
      • 2013-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多