Shiro系列(2) - 权限模型以及权限分配的两种方式

简介: 1. 顶级账户分配权限用户需要被分配相应的权限才可访问相应的资源。权限是对于资源的操作一张许可证。给用户分配资源权限需要将权限的相关信息保存到数据库。这些相关内容包含:用户信息、权限管理、用户分配的权限信息(数据模型)2.

1. 顶级账户分配权限
用户需要被分配相应的权限才可访问相应的资源。权限是对于资源的操作一张许可证。给用户分配资源权限需要将权限的相关信息保存到数据库。
这些相关内容包含:用户信息、权限管理、用户分配的权限信息(数据模型)

2. 权限模型设计
主体(user、password)
权限(权限名称、资源id)/资源(资源名称、访问url)
角色(角色名称)
角色和权限关系(角色id、权限id)
主体和角色关系(主体id、角色id)

 

3. 权限分配有两种  ​

    ​3.1 基于角色的权限控制

这些角色包含比如:总经理,技术总监,运营总监

不同的角色可以访问到的数据权限不同

例:

if (user.ifHasRole('总经理')) {

    ​// 访问所有资源

}

if (user.ifHasRole('技术总监')) {

    // 访问数据监控

    // 访问服务器信息

}

if (user.ifHasRole('运营总监')) {

    // 访问用户数据

    // 访问报表数据

}

缺点:在经常变更角色权限的管理系统中无法做到动态管理,因为用户主体在整个系统中都是活动对象。

 

举个栗子:

技术总监需要查看用户数据,而用户数据只有运营总监才有权限看,那么此时需要修改代码了:

if (user.ifHasRole('技术总监') || user.ifHasRole('运营总监')) {

    // 访问数据监控

    // 访问服务器信息

}

所以说这样的方式不利于系统的扩展,即可扩展性太弱。

当然如果系统可以让人身兼多只,那么多选角色即可,这个用户同时有技术总监以及运营总监的身份。

但是如果涉及到HR总监甚至实施总监的功能,那么这个用户就同时有4个角色,这样真的好吗?

 

 ​3.2 基于资源的权限控制

资源即功能,也就是当前系统所包含的所有功能模块,这些是不变的

比如button,link,menu等

此时访问这些资源需要permission来鉴权

例:

if (user.ifHasPermission('访问用户数据')) {

    // 访问用户数据

}

if (user.ifHasPermission('访问报表数据')) {

    // 访问报表数据

}

if (user.ifHasPermission('访问用户数据') || user.ifHasPermission('访问报表数据')) {

    // 访问用户数据 和 报表数据

}

 

那么这样的话我们只有针对当前登录的用户,增加相应的资源权限即可,没有必要再去维护代码,减少了程序的代码维护。因为资源在整个系统中是静态对象。

*增减资源权限需要另开一个权限资源分配的模块,在这个模块中设置用户的资源权限即可,一般由顶级账户来操作。

<未完待续...>

具体内容同步更新文章以及视频到微信公众号,知乎,豆瓣,cnblogs,今日头条以及新浪微博,以官网itzixi.com为主

 

相关文章
|
8月前
|
缓存 Java 数据安全/隐私保护
SpringSecurity实现动态管理权限(三)
SpringSecurity实现动态管理权限(三)
176 0
|
2月前
|
关系型数据库 MySQL 数据库
MySQL技能完整学习列表9、用户管理和权限控制——1、创建和管理用户——2、权限授予和撤销
MySQL技能完整学习列表9、用户管理和权限控制——1、创建和管理用户——2、权限授予和撤销
43 0
|
8月前
|
SQL 关系型数据库 MySQL
springSecurity权限表设计
springSecurity权限表设计
106 0
springSecurity权限表设计
|
4月前
|
前端开发 Java 数据库
基于RBAC的权限模型+shiro+springboot实现的系统登陆权限认证模块
基于RBAC的权限模型+shiro+springboot实现的系统登陆权限认证模块
45 0
|
10月前
|
安全 数据安全/隐私保护
JeeSite 访问控制权限
JeeSite 访问控制权限
145 0
|
11月前
|
存储 数据库 数据安全/隐私保护
Shiro角色和权限管理
Shiro角色和权限管理
|
12月前
|
安全 JavaScript Java
复杂场景下的权限系统该怎么玩?ABAC权限模型帮你搞定它
复杂场景下的权限系统该怎么玩?ABAC权限模型帮你搞定它
|
缓存 前端开发 数据安全/隐私保护
【权限设计系列】「认证授权专题」史上最全的权限认证服务的权限模型大全
【权限设计系列】「认证授权专题」史上最全的权限认证服务的权限模型大全
277 0
【权限设计系列】「认证授权专题」史上最全的权限认证服务的权限模型大全
|
Java 数据安全/隐私保护 Spring
【自己设计权限控制】【网站的权限控制】【限制用户访问级别高的接口】
【自己设计权限控制】【网站的权限控制】【限制用户访问级别高的接口】
|
XML 移动开发 安全
Spring Security实现权限管理(用户、角色、权限)
Spring Security实现权限管理(用户、角色、权限)
558 0

热门文章

最新文章