玩转SpringBoot之整合 shiro 权限框架
在实际项目中,经常需要用到角色权限区分,以此来为不同的角色赋予不同的权利,分配不同的任务 。比如,普通用户只能浏览;会员可以浏览和评论;超级会员可以浏览、评论和看视频课等;实际应用场景很多 。毫不夸张的说,几乎每个完整的项目都会涉及到权限管理 。
因此,这篇文章,阿淼就带大家将 shiro 权限框架整合到 SpringBoot 中,以达到快速的实现权限管理的功能 。
序在 Spring Boot 中做权限管理,一般来说,主流的方案是 Spring Security,但是由于 Spring Security 过于庞大和复杂,只要能满足业务需要,大多数公司还是会选择 Apache Shiro 来使用 。
一般来说,Spring Security 和 Shiro 的区别如下:
Spring SecurityApache Shiro重量级的安全管理框架轻量级的安全管理框架概念复杂,配置繁琐概念简单、配置简单功能强大功能简单
这篇文章会首先带大家了解 Apache Shiro,然后再给出使用案例 Demo 。
走进 Apache Shiro官网认知照例又去官网扒了扒介绍:
Apache Shiro™ is a powerful and easy-to-use JAVA security framework that performs authentication, authorization, cryptography, and session management. With Shiro’s easy-to-understand API, you can quickly and easily secure any Application – from the smallest mobile applications to the largest web and enterprise applications. Apache Shiro™是一个强大且易用的Java安全框架,能够用于身份验证、授权、加密和会话管理 。Shiro拥有易于理解的API,您可以快速、轻松地获得任何应用程序——从最小的移动应用程序到最大的网络和企业应用程序 。简而言之,Apache Shiro 是一个强大灵活的开源安全框架,可以完全处理身份验证、授权、加密和会话管理 。
Shiro能到底能做些什么呢?
- 验证用户身份
- 用户访问权限控制,比如:1、判断用户是否分配了一定的安全角色 。2、判断用户是否被授予完成某个操作的权限
- 在非 Web 或 EJB 容器的环境下可以任意使用Session API
- 可以响应认证、访问控制,或者 Session 生命周期中发生的事件
- 可将一个或以上用户安全数据源数据组合成一个复合的用户 “view”(视图)
- 支持单点登录(SSO)功能
- 支持提供“Remember Me”服务,获取用户关联信息而无需登录 ···
自2003年以来,框架环境发生了很大变化,因此今天仍然有充分的理由使用Shiro 。实际上有很多原因 。Apache Shiro是:
- 易于使用 -易于使用是该项目的最终目标 。应用程序安全性可能非常令人困惑和沮丧,并被视为“必要的邪恶” 。如果您使它易于使用,以使新手程序员可以开始使用它,那么就不必再痛苦了 。
- 全面 -Apache Shiro声称没有其他具有范围广度的安全框架,因此它可能是满足安全需求的“一站式服务” 。
- 灵活 -Apache Shiro可以在任何应用程序环境中工作 。尽管它可以在Web,EJB和IoC环境中运行,但并不需要它们 。Shiro也不要求任何规范,甚至没有很多依赖性 。
- 具有Web功能 -Apache Shiro具有出色的Web应用程序支持,使您可以基于应用程序URL和Web协议(例如REST)创建灵活的安全策略,同时还提供一组JSP库来控制页面输出 。
- 可插拔 -Shiro干净的API和设计模式使它易于与许多其他框架和应用程序集成 。您会看到Shiro与Spring,Grails,Wicket,Tapestry,Mule,Apache Camel,Vaadin等框架无缝集成 。
- 受支持 -Apache Shiro是Apache Software Foundation(Apache软件基金会)的一部分,该组织被证明以其社区的最大利益行事 。项目开发和用户群体友好的公民随时可以提供帮助 。如果需要,像Katasoft这样的商业公司也可以提供专业的支持和服务 。
下图为描述 Shiro 功能的框架图:

文章插图
如图所示,功能包括:
- Authentication(认证):用户身份识别,通常被称为用户“登录”
- Authorization(授权):访问控制 。比如某个用户是否具有某个操作的使用权限 。
- Session Management(会话管理):特定于用户的会话管理,甚至在非web 或 EJB 应用程序 。
- Cryptography(加密):在对数据源使用加密算法加密的同时,保证易于使用 。
推荐阅读
- 周瑜死后东吴的大都督是谁 东吴周瑜之后是谁
- 华为内部远程工具——IPOP,了解一下
- Go 每日一库之 jobrunner
- 法院是怎么判逾期网贷?
- 穿得太少易引发滑膜炎 “春捂”关键之战得胜
- 春季老人健康养生 五个小条件可“成人之美”
- 三藩之乱吴三桂为什么失败 康熙撤藩吴三桂反了吗
- 汉武帝和匈奴的战争叫什么战役 汉武帝匈奴之战的影响
- 渐解中华民族茶道之源,今古茶道茶艺
- 旧时圆茶之发酵,大益2011年101批小龙柱熟茶品评