常见的权限设计思路

 权限需求

 1.最小权限原则

给予用户最少必要的权限,以避免权限的过度授权和滥用。这种方法可以最大限度地减少系统的风险和漏洞。


 2. 角色权限分离

将用户分组为不同的角色,每个角色具有不同的权限。这种方法可以根据用户的角色和职责来分配权限,避免了不必要的权限分配。


 3.层级权限设计

将权限分为不同的层级,每个层级具有不同的权限。这种方法可以根据用户的需求和职责来分配权限,以保证系统的安全性和完整性。


 4.审计日志

记录系统中的所有操作,包括用户的登录、注销、修改等,以便在出现问题时进行调查和审计。


 5.双重认证

使用多种身份验证方法,如用户名/密码、指纹、面部识别等,以确保只有经过授权的用户可以访问系统。


 6. 数据加密

使用加密技术来保护敏感数据,以防止未经授权的用户访问数据。


 7.定期更新权限

定期对用户权限进行更新和检查,以确保权限的正确性和完整性。


 8.应用程序安全

通过对应用程序进行安全测试和漏洞扫描,以确保系统的安全性和完整性。


 权限思路

在通用框架中,权限表一般是用来存储系统中的权限信息的,可以用来控制系统中的访问和操作权限。以下是一些常见的权限表设计:

1.权限表包含权限名称、权限编号、权限描述等字段。权限编号可以唯一标识一个权限,便于系统中进行权限的管理和控制。

2.权限表可以与角色表建立多对多的关系。这样可以将多个权限分配给同一个角色,或将同一个权限分配给多个角色,方便角色与权限之间的控制和管理。

3.权限表可以与用户表建立多对多的关系。这样可以将多个权限分配给同一个用户,或将同一个权限分配给多个用户,方便对用户的权限进行管理和控制。

4.权限表可以包含多个层级的权限,如模块权限、操作权限、字段权限等。这样可以根据不同的权限层级来进行权限的控制和管理。

5.权限表可以记录权限的状态,如启用、禁用等。这样可以方便管理员对权限进行管理和控制。

6.权限表可以记录权限的创建时间、修改时间、创建人、修改人等信息。这样可以方便系统管理员对权限的追踪和管理。

总的来说,权限表的设计应该结合具体的系统需求和业务场景,根据不同的权限层级进行划分和管理,以实现对系统中的访问和操作权限的有效控制和管理。同时,权限表也应该具备良好的扩展性和灵活性,以满足未来系统的需求变化。


 权限表简单示例

通用权限系统一般需要建立多张表来存储权限相关的信息,常见的表包括用户表、角色表、权限表、权限角色关联表、权限用户关联表等。以下是一些常见的表及其建表语句示例:


 1.用户表

用户表用于存储系统中的用户信息,一般包含用户ID、用户名、密码等字段。

1
2
3
4
5
6
7
8
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL,
  `password` varchar(255) NOT NULL,
  `created_at` datetime NOT NULL,
  `updated_at` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

 2.角色表

角色表用于存储系统中的角色信息,一般包含角色ID、角色名称、角色描述等字段。

1
2
3
4
5
6
7
8
CREATE TABLE `role` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `description` varchar(255) DEFAULT NULL,
  `created_at` datetime NOT NULL,
  `updated_at` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

 3.权限表

权限表用于存储系统中的权限信息,一般包含权限ID、权限名称、权限描述等字段。

1
2
3
4
5
6
7
8
CREATE TABLE `permission` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `description` varchar(255) DEFAULT NULL,
  `created_at` datetime NOT NULL,
  `updated_at` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

 4.权限角色关联表

权限角色关联表用于记录角色与权限之间的关联关系,一般包含角色ID、权限ID等字段。

1
2
3
4
5
6
7
8
CREATE TABLE `role_permission` (
  `role_id` int(11) NOT NULL,
  `permission_id` int(11) NOT NULL,
  PRIMARY KEY (`role_id`,`permission_id`),
  KEY `permission_id` (`permission_id`),
  CONSTRAINT `role_permission_role_fk` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `role_permission_permission_fk` FOREIGN KEY (`permission_id`) REFERENCES `permission` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

 5.权限用户关联表

权限用户关联表用于记录用户与权限之间的关联关系,一般包含用户ID、权限ID等字段。

1
2
3
4
5
6
7
CREATE TABLE `user_permission` (
  `user_id` int(11) NOT NULL,
  `permission_id` int(11) NOT NULL,
  PRIMARY KEY (`user_id`,`permission_id`),
  KEY `permission_id` (`permission_id`),
  CONSTRAINT `user_permission_user_fk` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `user_permission_permission_fk` FOREIGN KEY (`permission_id`) REFERENCES


果糖网