【问题标题】:asp.net Membership : Extending Role membership?asp.net 成员资格:扩展角色成员资格?
【发布时间】:2011-02-03 13:47:18
【问题描述】:

我一直在查看 asp.net 成员资格,它似乎提供了我需要的一切,但我需要某种自定义角色功能。

目前我可以将用户添加到角色中,太好了。

但我还需要能够向角色添加权限..

角色:编辑 权限:可以查看编辑器菜单、可以写入编辑器表、可以删除编辑器表中的条目。

目前它不支持这个,这背后的想法是在我的程序中创建一个管理选项来创建一个角色,然后将权限分配给一个角色说“允许用户查看应用程序的某个部分” , "允许用户打开一个菜单项"

任何想法我将如何实现这样的事情?

我假设一个自定义角色提供程序,但我想知道是否已经存在某种框架扩展而没有滚动我自己的?

或者任何人都知道如何解决这个问题的好教程?

我对 asp.net SQL 提供程序在表等方面创建的内容非常满意......但我认为我需要通过添加另一个名为 RolesPermissions 的表来扩展它

然后我假设 :-) 为每个有效权限在表中添加某种枚举??

提前致谢

【问题讨论】:

    标签: asp.net asp.net-membership roles


    【解决方案1】:

    您可以使用该框架根据角色限制对整个页面或目录的访问。这可以在 web.config 的授权元素中进行配置。 http://msdn.microsoft.com/en-us/library/wce3kxhd.aspx

    此外,如果您在菜单中使用站点地图,并且已配置授权,则可以使用安全修整来限制菜单。 http://www.google.com/search?q=asp.net+security+trimming

    【讨论】:

      【解决方案2】:

      您可以通过编程方式允许或不允许用户查看某些页面,或使用例如函数 IsInRole 执行某些操作,并检查您是否允许用户执行某些操作。

      HttpContext.Current.User.IsInRole("rolename")
      

      您可以使用您的权限创建一个类/或表,并根据用户所属的角色,在同一页面上打开、关闭、允许等很多想法。我在我的程序上有这样的想法,很简单。

      这是一个想法......

      public enum csPermissions
      {
          pActionDelete = 1,   
          pActionEdit = 2 , 
          ...more actions...
      }
      
      private int[] AdminPermission = { 
          (int)csPermissions.pActionEdit, 
          (int)csPermissions.pActionDelete, 
          ....
      };
      
      private int[] BackOfficePermission = { 
          (int)csPermissions.pActionEdit, 
          ....
      }; 
      
      public static bool IsThisAllowed(csPermissions AskPermitForThisAction)
      {
          ... questions here for all users roles...
          ... here is only an example .....
          if (HttpContext.Current.User.IsInRole("Administator")))
          {
              for (int i = 0; i < AdminPermission.Length; i++)
                  if (AdminPermission[i] == (int)AskPermitForThisAction)
                      return true;
          } 
      
          ...  
          return false;
       }
      

      希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-27
        • 1970-01-01
        • 2011-12-22
        • 2010-09-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多