【问题标题】:Custom Roles and Permissions in ASP.NET Webforms [duplicate]ASP.NET Webforms 中的自定义角色和权限 [重复]
【发布时间】:2023-03-12 02:51:01
【问题描述】:

我正在尝试在我的 ASP.NET Webforms 应用程序(不使用 MVC)中添加一个可配置的用户权限模块,该模块可由管理员用户配置。我的用户数据库架构如下所示

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

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

我希望根据已登录用户的权限启用/禁用菜单/子菜单。我还希望限制尝试通过直接输入 a 的 url 进行导航的用户他无权访问的页面。

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

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

【问题讨论】:

  • 我使用不正确的 ID 提出了同样的问题,我删除了该问题并使用正确的个人资料提出了这个问题。所以你所指的问题不存在。

标签: c# asp.net webforms


【解决方案1】:
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;
    }

【讨论】:

  • 建议的代码是基于假设您没有使用 .net 身份,因此您可能需要在每次用户请求页面时进行查询和检查(这很糟糕 - 增加服务器负载)额外的算法)。另外最好将静态算法分解出来并将其放在其他地方而不是页面实例级别。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-03
  • 2010-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
  • 1970-01-01
相关资源
最近更新 更多