权限方案设计

一. 传统权限设计方案

1. 什么是权限

1.1. 概述

1. 有的资源可以直接访问,有的资源需要登录之后才能访问
2. 不同的人登录系统之后,看到的界面是不一样的
3. 即使登录之后,进入界面看到相同的按钮,但是有的人可以点击,有的点不了,即使能点击,也会有限制时间
    
体现:会员、普通管理员超级管理员等

1.2. 分类:

登录权限:你没有登录,那么有些资源是不能访问

菜单权限:不同的人登录之后,看到的菜单列表个数不一样,或者子菜单也是不一样的

按钮权限/资源权限:相同的按钮,A能点击能访问,B不能点击也不能访问,或者说有限制时间

简单理解:权限就是不同的人,能看到不同菜单,能操作不同的按钮

2. 什么是RBAC

RBAC是基于角色的访问控制【Role-Based Access Control 】,是目前最为广泛接受的权限控制模型。也称之为RBAC权限控制模型

在 RBAC 中,用户通过角色与权限进行关联。多个用户可以是同一个角色,每一个角色拥有若干权限【角色表就是权限的集合表】。系统根据登录用户的角色不同,从而给予不同的系统访问权限,这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便

6c76ff842deb44c6855cffb3b2605c86.png

传统的权限一般分为:

  • 登录权限

  • 菜单权限

  • 按钮权限/资源权限

3. RBAC权限所涉及表结构

181c982a51e84ac7a650d7755852d90c.png

t_employee用于登录,t_menu用于显示
1. 为什么要设计中间表?
    答:只要是多对多必须是要设计中间表
        多对多:不管从任何一方去看关系都是一对多的关系,这样就是多对多
2. 为什么要使用权限表?直接挂菜单不行吗?
    要做资源权限
3. 为什么要使用角色表?员工直接挂权限不行吗?
    答:可以,但是不会这样做,因为这样做的话
        员工与权限的中间表数据量非常庞大【1000个员工,每个员工1000个权限就是1000000条数据】
        员工具有高流动性,非常不方便后期的维护【走一个员工,来一个新员工,都需要去维护中间表】
    相当于给一批权限取一个别名【角色】
        后期维护,只需要增删一条数据即可
        角色表就是权限的集合表

 

4. 权限实现的原理

权限控制的实现方式有很多,例如:shiro, Spring Security等。也可以通过自定义拦截器实现

其中核心包括:

  • 当前的资源请求者是谁(当前的登录用户)

  • 授权(用户有哪些权限)

  • 验证(当前访问的资源是否有权访问)

661746f78bcd4349865ec2d8896640c6.png

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值