2017-04-15 57 views
1

我想在我的ASP.NET Webforms应用程序(不使用MVC)中添加可由管理员用户配置的可配置用户权限模块。我的用户数据库模式如下所示 enter image description hereASP.NET Webforms中的自定义角色和权限

我希望管理员用户创建角色(UserGroup),为组分配权限并使用它所属的组创建用户。到目前为止,我可以自己做,但我的问题是一旦创建用户,实现权限的最佳方法是什么。更具体地说,我的主页上有菜单,其中包含EntityName,它具有查看,添加,编辑,删除子菜单。例如*客户

  • 查看
  • 添加
  • 编辑
  • 删除

我想根据用户的许可的情况下启用/禁用菜单/子菜单谁已登录。我还希望限制用户尝试通过直接输入他没有权限的网页的网址进行导航。

我想指出,用户(管理员)应该能够创建一个角色,所以没有硬编码的角色名称等在网络配置文件。

编辑: - 有一个existing question,但这并不回答如何限制用户尝试导航到一个页面,通过键入他没有访问权限的网址。

+0

同样的问题被问我使用不正确的ID,我删除了这个问题,并用我的正确配置文件问这个问题。所以你所指的问题不存在。 – KMan

回答

0
protected void Page_Load(object sender, EventArgs e) 
    { 
     // Perform The UI Logic 
     // Assuming That You Are Tracking The User For Each Reqeust In Session["UserID"] 
     ShowHideMenuOrSubMenu_Role_Your_RoleName(Session["UserID"].ToString()); 
    } 
    public static void ShowHideMenuOrSubMenu_Role_Your_CRUD_RoleName(string UserID) 
    { 
     if (CheckUserRole("Your_CRUD_Role", UserID)) 
     { 
      //1. Set Your Front End WebForm Control To Disable 
      //2. Set Your Front End WebForm Control CSS 
      // Whichever you prefer . 
     } 
    } 
    public static bool CheckUserRole(string Role_CRUD , string UserID) 
    { 

     // Go Into DB/Repository/EF Where Your Role/User Setting Is Set . 
     // Perform Checking 
     // Assuming The Result Is A Bool Checking Result That You Checked 
     return Result; 
    } 
+0

建议的代码基于假设您未使用.net标识,因此您可能需要在每次用户请求页面时查询和检查(这很糟糕 - 通过执行额外的算法来增加服务器负载)。再加上最好的方法是将静态算法分解出来,并将其放在其他地方,而不是放在页面实例级别。 –