- 浏览: 209707 次
- 性别:
- 来自: 哈尔滨
文章分类
- 全部博客 (267)
- java.lang (8)
- 问题汇总 (21)
- 异常记录 (20)
- 功能实现 (19)
- 面试总结 (25)
- 技巧总结 (8)
- 常用代码 (4)
- 编程习惯 (3)
- 编码规则 (3)
- java.util (10)
- java.io (1)
- JavaWeb (9)
- MySQL (16)
- SVN (3)
- MyBatis (11)
- Velocity (7)
- 其他知识 (10)
- 人生哲理 (1)
- 人生故事 (1)
- 自我感悟 (1)
- shiro (3)
- 基础知识 (0)
- 问题总结 (1)
- Spring 标签 (1)
- Spring (3)
- 点滴生活 (1)
- DOS (1)
- CAS (4)
- Linux (9)
- Storm (6)
- Shell (1)
- regex (1)
- Collection (4)
- poi (1)
- 经典语句 (1)
- NIO (5)
- concurrent (14)
- RPC (1)
- zookeeper (3)
- 待整理 (2)
- Hadoop (9)
- RabbitMq (2)
- flume (1)
- hive (7)
- hbase (4)
- kafka (1)
- scala (1)
- GC (0)
- java.util.concurrent.atomic (1)
- java.lang.ref (6)
- JVM (2)
- algorithm (1)
- conception (1)
- java key word (1)
- sun.misc (1)
最新评论
基于SHIRO的管理后台权限认证系统实现(一)
一、项目需求:
1.优化原有的管理后台的权限管理
原角色权限管理:
用户管理菜单:添加/编辑用户,离职/在职,密码创建,部门、职位划分
角色管理菜单:关联某一角色,角色对应一系列的权限;如:用户是录入人员,则能看到所有商品相关的管理菜单;如果职位再是主管,则能看到全部数据;即通过职位、部门、角色三者联合确认权限
2.权限细粒度化
权限对应具体的某一个菜单、页面上的按钮
3.分配灵活
与具体的部门、职位不再关联
二、项目实现
1.用户表 user
id | 用户Id |
name | 用户登录名 |
password | 用户密码 |
status | 离职在职 |
备注:
密码加密使用SHIRO自带的功能,不可逆;登录验证时,将用户输入的密码按照同样规则加密与库中存储的密码比较
2.权限表 permission
id | 权限Id |
name | 权限名称 |
value | 字符串表示 |
pid | 权限父类Id |
type | 类型:按钮or菜单 |
备注:
权限对应于管理后台以后的功能;需提前整理好;预先将数据录入到表中
由于权限要精确到页面按钮,故对已有数据资源进行整理,分级
举例:
权限添加功能以树状图形展示,故需要有pid,pid即上一级的权限的编号
PID=0,根目录
以PID=0为父类的是一级菜单
再以一级菜单作为PID的是其所属的子集菜单,子集菜单分为按钮和菜单两种
页面展示位树形,在后端将数据组装后
使用:
为用户授权时,勾选权限前面的复选框,将用户与权限的关联存储在关联表中
3.用户与权限关联表 user_permission
id | 主键 |
userId | 用户Id |
permissionId | 权限Id |
4.角色表 role
id | 主键 |
name | 角色名称 |
value | 字符串表示 |
5.用户角色关联表 user_role
id | 主键 |
userId | 用户Id |
roleId | 角色Id |
6.角色权限关联表 role_permission
id | 主键 |
roleId | 角色Id |
permissionId | 权限Id |
7.名词解释
身份及凭证:即用户登录名以及密码;调用doAuth方法进行验证,底层实现即为通过username查询user表,比较password
角色:权限的集合;为用户分配一批权限
权限:用户可以执行的功能
8.具体实现
8.1 权限管理页面
准备:预先整理当前网站的需分配的权限;按照层级的方式归纳;添加到数据表中
展示:
列表页面:提供添加、修改、删除按钮;页面内容采用折叠覆盖的方式,只展示一级的菜单,一级菜单相应的二级以及其他级别菜单隐藏;
添加按钮:列表页面上面的添加按钮为添加一级菜单,一级菜单上的添加按钮为添加二级菜单,以此类推
删除按钮:判断当前是否有角色或用户拥有此权限,是否确认删除,若是,同时删除与此权限相关联的其他数据
备注:
删除权限的同时,删除与该权限有关的其他表中的数据,以免存在脏数据
8.2 角色管理页面
列表:展示所有角色,添加、编辑、删除
授权:跳转新页面,展示所有权限列表
规定:
一级权限的pid = 0 ;
二级权限的pid = 0 ;
三级权限的pid = 相应的二级权限的Id
以此类推
配置前端进行调试,将数据已多重集合的方式组装,左侧提供复选框,勾选相应的权限,提交保存到角色权限关联表中
备注:删除同上
8.3 用户管理页面
列表:展示当前所有用户
用户可按照另一个维度进行划分展示:职位、部门、分组等等
角色:展示角色列表,添加角色
权限:特殊授权,是用户分配角色的功能的补充,意思是用户在获得一批权限后还想拥有另一个职能中的一个查看权限,即可通过授权来完成
8.4 说明:
具体的实现过程中是通过比较 权限的字符串或角色的字符串来实现的
9.权限判断的实现
9.1 用户登录
用户登录过程中,首先做认证验证,如果身份凭证不符,即不允许登录;
用户登录成功,做授权认证,通过
userId --> user_role --> List<roleId> --> role_permission --> List<permissionId>
userId --> user_permission --> List<permissionId>
取两个集合的并集并去重,使用Set处理
9.2 将此集合放入用户登录的Session中(shiro本身维护的Session,可通过配置文件进行维护)
9.3 权限认证
在每一个Action上方配置权限标签,即请求该Action需有此权限(即表中存放的字符串)
9.4 若使用VM
可通过VM的自定义函数实现页面上的按钮展示的判断--即细粒度的权限实现
10.其他
10.1
理清思路,细节实现可以参考网上的文章。
总得设计思想:
首先创建一个admin用户,手动创建直接插入数据库中
创建用户及分配权限
后续创建的用户登录成功后,会按照框架的设计走权限验证
简单的说,权限认证就是从数据库中读取此用户拥有的权限
此处,需要注意,由于session的时效性的原因,用户登录成功后直到用户退出前,他的权限都不会改变;可以修改底层的缓存实现,进而可以实现,admin修改用户权限后,不需退出登录即可变更权限。
博文参考:
http://jinnianshilongnian.iteye.com/blog/2018936
发表评论
-
使用软引用构建敏感数据的缓存
2017-11-16 22:19 841使用软引用构建敏感数 ... -
JSP自定义标签
2017-11-14 20:35 342JSP页面中分页功能实现使用了 <urlChange ... -
手机号码替换中间四位
2017-10-24 21:41 920需求描述: 为用户隐私考虑,展示用户信息时需要将中间用*代替 ... -
遍历集合删除元素
2017-10-24 18:44 657一、根据下标删除元素 1.测试代码 ArrayLis ... -
统计每天的数据
2017-10-10 21:23 543需求:按天统计数据 分析:create_time 为 dat ... -
基于AbstractDataSource实现主从数据库切换
2017-10-07 18:03 1043基于AbstractDataSource实现主从数据库切换 ... -
Shrio中session与Http中Session
2016-06-14 17:46 648问题:为什么代码中没有向页面传值的操作,页面中依然可以使用se ... -
服务器文件下载
2016-03-27 09:53 377项目需求:在列表页面上提供文件下载链接 项目实现: 1.准 ... -
扫码登录功能实现
2015-08-21 08:19 518需求:PC端(电脑端) ... -
基于SHIRO实现用户登陆后跳转其匿名访问的URL路径
2015-07-15 15:03 3642需求描述: 用户在未登录时访问网站中某个需要登录后才能访问 ... -
基于SHIRO的管理后台权限认证系统实现(二)
2015-06-28 10:14 817用户登陆系统后左侧菜单加载 项目:管理员系统 功能:用户登 ... -
org.apache.shiro.session.UnknownSessionException
2015-06-27 18:19 3914问题说明: 背景:系 ... -
Velocity中set的使用
2015-05-26 10:46 531问题:从页面接收某字段的提交数据,数据要求是组合后的编号 ... -
Velocity页面中输出时间年月
2015-05-19 20:52 994问题:注册页面要求有创建时间的选项添加,年为至今为止 实现: ... -
Set判重操作实现
2015-05-15 15:28 800需求:Set<Po>判重操作实现 问题:Set& ... -
如何去除List集合中的重复数据
2015-05-15 13:12 911需求:用户权限查看, ... -
Date相关功能实现
2015-05-12 19:47 628一、同一天 需求:用户记录跟踪列表展示,要求用户数据同一天内 ... -
velocity截取过长的字段值
2015-05-11 20:06 378问题:页面列表展示时,某个字段的值超长,影响页面的整体样式 ... -
将list中某个元素放在首位
2015-05-10 17:25 4578需求:程序开发过程中,业务方要求在展示国家列表时要将US放在首 ... -
Velocity遍历map与遍历list
2015-04-22 20:16 6945问题: 向页面传递key与value的组合 1. 1.1 ...
相关推荐
通过以上步骤,我们可以构建一个集成了 Spring Boot 和 Shiro 的权限认证管理系统,能够实现用户登录、权限校验、会话管理等功能,同时利用缓存提升系统性能。在实际开发中,还可以根据需求扩展 Shiro 功能,例如...
在构建后台管理系统时,权限控制是至关重要的一个环节,它能确保系统安全,防止非法访问和操作。本项目采用SpringBoot、Apache Shiro以及LayuiMini框架来实现这一目标。接下来,我们将深入探讨这三个技术栈如何协同...
总结,基于SSM和Shiro的企业权限管理系统结合了Spring的依赖注入和AOP特性、Spring MVC的Web处理能力和MyBatis的数据库操作能力,以及Shiro的强大安全控制,共同构建出一个高效、安全的企业级权限管理解决方案。...
本项目——“基于SpringBoot+Vue+Shiro的后台权限管理系统”是一个典型的IT毕业设计案例,旨在提供一个完整的、功能完善的后台管理平台,以供学习和实践。下面,我们将深入探讨这个系统的架构、核心技术和实施要点。...
这是一个基于Java技术栈,利用SpringBoot、Vue.js和Shiro框架构建的后台权限管理系统。这个系统主要用于演示和学习如何在实际开发中实现用户权限管理、角色分配以及功能访问控制等功能。下面将详细介绍其中涉及的...
【RBAC】基于springboot+shiro实现RBAC权限后台管理系统.zip 项目结构 |—— ctrl —— 请求层 |—— service —— 业务层 |—— common |—— |—— annotation —— 项目中使用的注解 |—— |—— aspect —— ...
理解基于资源的权限管理 掌握权限管理的数据模型 掌握 Shiro 进行认证的常用方法 掌握 Shiro 进行授权的常用方法 Shiro 整合企业应用开发 http://47.116.138.95:8080/i-admin-1.0-SNAPSHOT/login 账号 jack 密码:...
《基于SpringBoot+Mybatis+Shiro+Thymeleaf的后台管理系统详解》 SpringBoot以其简化Spring应用的初始搭建以及开发过程而受到广大开发者喜爱。在这个后台管理系统中,SpringBoot作为核心框架,提供了自动配置、内嵌...
【基于SpringBoot的后台权限管理系统】是一个以SpringBoot为核心技术栈的管理平台,它整合了多种框架和技术,为开发者提供了一套完整的权限控制解决方案。SpringBoot以其便捷的配置和快速的开发特性,使得构建此类...
《基于Shiro+DWZ的权限管理系统实现详解》 在当今的互联网应用中,权限管理是不可或缺的一部分,它确保了用户只能访问他们被授权的资源,保护了系统的安全性和稳定性。本文将深入探讨一个基于Apache Shiro和DWZ...
标题中的"SpringBoot+layui+Thymeleaf+Mybatis+Shiro后台管理系统脚手架"代表了一个基于SpringBoot框架的后台管理系统,该系统利用了一系列技术来构建高效、易用的管理界面。以下是对这些技术及其在系统中的作用的...
《SpringBoot Shiro后台管理系统详解》 在现代企业级应用开发中,后台管理系统扮演着至关重要的角色,它负责处理各种业务逻辑,管理用户权限,并提供高效稳定的后台服务。本篇文章将深入探讨基于Java的SpringBoot...
标题和描述中提到的"基于SpringBoot2 Shiro Thymeleaf的后台管理系统"是一个现代Web应用程序开发的实例,它整合了三个关键的技术组件:Spring Boot、Apache Shiro和Thymeleaf。以下是对这三个技术及其在后台管理系统...
在这个基于 Java EE 的权限后台管理系统中,开发者使用了 Spring MVC、MyBatis 和 Apache Shiro 框架来实现权限管理和控制。这是一个典型的 Model-View-Controller (MVC) 设计模式的应用,其中Spring MVC 负责控制层...
在IT行业中,构建一个高效的后台管理系统是至关重要的。本项目以"基于Maven+SSM整合shiro+Redis实现后台管理项目"为主题,旨在利用现代Web开发技术来创建一个安全、可扩展且高效的管理平台。下面我们将详细探讨这个...
【标题】中的“管理系统系列--基于SSM框架简单的后台权限管理系统”揭示了这是一个关于构建管理系统的教程或项目,它利用了Spring、SpringMVC和Shiro这三个关键的技术组件。SSM框架是Java开发中常用的一个集成框架,...
【标题】"spring+mybatis+shiro的基本权限管理后台Demo"揭示了这是一个采用Java Web技术栈实现的权限管理系统原型,主要涉及Spring框架、MyBatis持久层框架以及Apache Shiro安全框架。这个Demo旨在展示如何整合这三...
该后台管理系统提供了基础的用户管理、角色管理、权限分配等功能,开发者可以根据需求在此基础上扩展其他业务模块。通过SpringBoot的自动配置特性,Mybatis负责数据库操作,Shiro处理用户认证和授权,Thymeleaf则...