没有合适的资源?快使用搜索试试~ 我知道了~
【SpringBoot】廿三、SpringBoot中整合Shiro实现权限管理.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
63 浏览量
2022-06-30
21:35:35
上传
评论
收藏 475KB PDF 举报
温馨提示
【SpringBoot】廿三、SpringBoot中整合Shiro实现权限管理.pdf【SpringBoot】廿三、SpringBoot中整合Shiro实现权限管理.pdf【SpringBoot】廿三、SpringBoot中整合Shiro实现权限管理.pdf【SpringBoot】廿三、SpringBoot中整合Shiro实现权限管理.pdf【SpringBoot】廿三、SpringBoot中整合Shiro实现权限管理.pdf【SpringBoot】廿三、SpringBoot中整合Shiro实现权限管理.pdf【SpringBoot】廿三、SpringBoot中整合Shiro实现权限管理.pdf【SpringBoot】廿三、SpringBoot中整合Shiro实现权限管理.pdf
资源推荐
资源详情
资源评论




















【SpringBoot】廿三、SpringBoot 中整合 Shiro 实现权
限管理
2020-07-1216:53:31
之前在SSM 项目中使用过shiro ,发现shiro 的权限管理做的真不错,但是在SSM
项目中的配置太繁杂了,于是这次在SpringBoot 中使用了shiro ,下面一起看看
吧
一、简介
ApacheShiro 是一个强大且易用的 Java 安全框架,执行身份验证、授权、密码和会
话管理。使用 Shiro 的易于理解的 API,您可以快速、轻松地获得任何应用程序,从
最小的移动应用程序到最大的网络和企业应用程序。
三个核心组件:
1、Subject
即“当前操作用户”。但是,在Shiro 中,Subject 这一概念并不仅仅指人,也可以是
第三方进程、后台帐户(DaemonAccount )或其他类似事物。它仅仅意味着“当前
跟软件交互的东西”。Subject 代表了当前用户的安全操作,SecurityManager 则管
理所有用户的安全操作。
2、SecurityManager
它是 Shiro 框架的核心,典型的Facade 模式,Shiro 通过SecurityManager 来管理
内部组件实例,并通过它来提供安全管理的各种服务。
3、Realm
Realm 充当了Shiro 与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用
户执行认证(登录)和授权(访问控制)验证时,Shiro 会从应用配置的Realm 中
查找用户及其权限信息。从这个意义上讲,Realm 实质上是一个安全相关的 DAO:
它封装了数据源的连接细节,并在需要时将相关数据提供给Shiro 。当配置Shiro
时,你必须至少指定一个Realm ,用于认证和(或)授权。配置多个Realm 是可
以的,但是至少需要一个。Shiro 内置了可以连接大量安全数据源(又名目录)的
Realm,如LDAP 、关系数据库(JDBC)、类似INI 的文本配置资源以及属性文件
等。如果缺省的Realm 不能满足需求,你还可以插入代表自定义数据源的自己的
Realm 实现。

二、整合 shiro
1、引入 maven 依赖
<!-- web 支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- thymeleaf 模板引擎 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- Shiro 权限管理 -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.2.4</version>
</dependency>
<!-- 为了能够在 html 中使用 shiro 的标签引入 -->
<dependency>
<groupId>com.github.theborakompanioni</groupId>
<artifactId>thymeleaf-extras-shiro</artifactId>
<version>2.0.0</version>
</dependency>
我使用的SpringBoot 版本是2.3.1 ,其它依赖自己看着引入吧
2、创建 shiro 配置文件
关于shiro 的配置信息,我们都放在ShiroConfig.java 文件中
import at.pollux.thymeleaf.shiro.dialect.ShiroDialect;
import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.spring.LifecycleBeanPostProcessor;
import org.apache.shiro.spring.security.interceptor.AuthorizationAttrib
uteSourceAdvisor;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoPr
oxyCreator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
import java.util.LinkedHashMap;
import java.util.Map;

/**
* shiro 配置类
*/
@Configuration
public class ShiroConfig {
/**
* 注入这个是是为了在 thymeleaf 中使用 shiro 的自定义 tag。
*/
@Bean(name = "shiroDialect")
public ShiroDialect shiroDialect() {
return new ShiroDialect();
}
/**
* 地址过滤器
* @param securityManager
* @return
*/
@Bean
public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManage
r securityManager) {
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilter
FactoryBean();
// 设置 securityManager
shiroFilterFactoryBean.setSecurityManager(securityManager);
// 设置登录 url
shiroFilterFactoryBean.setLoginUrl("/login");
// 设置主页 url
shiroFilterFactoryBean.setSuccessUrl("/");
// 设置未授权的 url
shiroFilterFactoryBean.setUnauthorizedUrl("/unauthorized");
Map<String, String> filterChainDefinitionMap = new LinkedHashMa
p<>();
// 开放登录接口
filterChainDefinitionMap.put("/doLogin", "anon");
// 开放静态资源文件
filterChainDefinitionMap.put("/css/**", "anon");
filterChainDefinitionMap.put("/img/**", "anon");
filterChainDefinitionMap.put("/js/**", "anon");
filterChainDefinitionMap.put("/layui/**", "anon");
// 其余 url 全部拦截,必须放在最后
filterChainDefinitionMap.put("/**", "authc");
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainD
efinitionMap);
return shiroFilterFactoryBean;
}
剩余11页未读,继续阅读
资源评论


春哥111
- 粉丝: 1w+
- 资源: 5万+
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制
