在codeigniter中为单个用户进行多个角色处理

时间:2017-09-27 07:20:22

标签: php codeigniter

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

如果员工的主要角色是销售协调员。在某些时候,他必须被分配到销售主管的另一个角色以及他的主要角色。因此,当该员工以其主要角色登录时,在他的菜单中,销售主管菜单也应该是活动的。

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

Sales 
Customers Details

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

Sales
Customers Details
Reports
Manage Staff

一旦销售协调员使用他的登录凭证登录到他的Panel,这将是新菜单。分配给两个不同角色的员工没有不同的登录信息。

1 个答案:

答案 0 :(得分:0)

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

与YiiFramework中的此图像类似 enter image description here

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
);