【问题标题】:Multiple role handling for a single user in codeignitercodeigniter 中单个用户的多角色处理
【发布时间】:2017-09-27 07:20:22
【问题描述】:

我现在遇到了麻烦,因为我的客户希望在所有安全措施到位的情况下为单个用户提供多个角色访问权限。我怎样才能在 Codeigniter 中做到这一点?我没有使用任何身份验证库。让我详细解释一下这个问题。 示例:

如果分配给员工的主要角色是销售协调员。在某些时候,除了他的主要角色之外,他还必须被分配另一个销售主管角色。因此,当该员工以其主要角色登录时,其菜单中的销售主管菜单也应处于活动状态。

以销售协调员(单一角色)身份登录时,菜单列表为:

Sales 
Customers Details

但是当他被分配一个额外的角色(销售主管)时,他的菜单也会在销售协调员主菜单中处于活动状态,如下所示:

Sales
Customers Details
Reports
Manage Staff

一旦销售协调员使用他的登录凭据登录到他的面板,这将是新菜单。对于分配的两个不同角色,该员工没有不同的登录名。

【问题讨论】:

  • 创建表(用户角色或权限),在登录时获取表的所有权限,并根据视图中的权限显示菜单
  • 如果您需要更多解释,我会以表格形式提供详细信息
  • 将角色加载为数组,并始终检查 is_exist
  • @Bilal Ahmed--我们可以在未来更改此权限并将权限重新分配给其他员工吗?我希望此角色更改条款可编辑。

标签: php codeigniter


【解决方案1】:

这个问题的范围可能超出了一篇 Stack Overflow 帖子。但正如一些人所提到的,一种方法是与用户表、角色表和函数表建立多对多关系。这样,您可以定义哪些用户具有哪些角色,进而定义每个角色可以执行哪些功能。

类似于来自 YiiFramework 的这张图片

http://www.yiiframework.com/tutorial/image?type=guide&version=1.1&lang=en&file=has_many_through.png

您可能有如下表格:

CREATE TABLE [Users]
(
    [UserID] INT PRIMARY KEY IDENTITY(1,1),
    [Username] NVARCHAR(50) NOT NULL
);

CREATE TABLE [Roles]
(
    [RoleID] INT PRIMARY KEY IDENTITY(1,1),
    [RoleTitle] NVARCHAR(50)
);

CREATE TABLE [UserRoles]
(
    [UserID] INT,
    [RoleID] INT
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-29
    • 2020-09-09
    • 2012-09-15
    • 2013-08-06
    • 2017-02-15
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多