SpringBoot整合Shiro的环境搭建教程
SpringBoot整合Shiro环境搭建
导入 SpringBoot 和 Shiro 整合包的依赖:
<!-- https://mvnrepository.com/artifact/org.apache.shiro/shiro-spring --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.10.1</version> </dependency>
下面是编写配置文件:
@Configuration public class ShiroConfig { }
Shiro 三大要素
- subject -> ShiroFilterFactoryBean
- securityManager -> DefaultWebSecurityManager
- realm
实际操作中对象创建的顺序 : realm -> securityManager -> subject
第一步:编写自定义的 realm ,需要继承 AuthorizingRealm,并且重写认证和授权方法:
public class UserRealm extends AuthorizingRealm { @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { System.out.println("执行了授权方法"); return null; } @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { System.out.println("执行了认证方法"); return null; } }
注册我们自己的realm到配置类里:
@Configuration public class ShiroConfig { @Bean public UserRealm userRealm(){ return new UserRealm(); } }
第二步:创建 securityManager,并加载realm:
@Bean(name = "SecurityManager") public DefaultWebSecurityManager getDefaultWebSecurity(@Qualifier("userRealm") UserRealm userRealm) { DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); // 需要关联自定义的 Realm,通过参数把 Realm 对象传递过来 securityManager.setRealm(userRealm); return securityManager; }
第三步:创建 subject,并关联 securityManager:
@Bean public ShiroFilterFactoryBean shiroFilterFactoryBean(@Qualifier("SecurityManager") DefaultWebSecurityManager defaultWebSecurityManager) { ShiroFilterFactoryBean subject = new ShiroFilterFactoryBean(); // 设置安全管理器 // 需要关联 securityManager ,通过参数把 securityManager 对象传递过来 subject.setSecurityManager(defaultWebSecurityManager); return subject; }
完整配置类:
@Configuration public class ShiroConfig { @Bean public ShiroFilterFactoryBean shiroFilterFactoryBean(@Qualifier("SecurityManager") DefaultWebSecurityManager defaultWebSecurityManager) { ShiroFilterFactoryBean subject = new ShiroFilterFactoryBean(); // 设置安全管理器 // 需要关联 securityManager ,通过参数把 securityManager 对象传递过来 subject.setSecurityManager(defaultWebSecurityManager); return subject; } @Bean(name = "SecurityManager") public DefaultWebSecurityManager getDefaultWebSecurity(@Qualifier("userRealm") UserRealm userRealm) { DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); // 需要关联自定义的 Realm,通过参数把 Realm 对象传递过来 securityManager.setRealm(userRealm); return securityManager; } @Bean public UserRealm userRealm() { return new UserRealm(); } }
现在,我们来实现一个简单的页面拦截测试一下吧!
编写两个页面、在templates目录下新建一个 user 目录 add.html update.html:
页面内容可以自定义:
在index页面上,增加跳转链接功能:
<a th:href="@{/user/add}" rel="external nofollow" >add</a> <hr/> <a th:href="@{/user/update}" rel="external nofollow" >update</a>
编写跳转到页面的controller:
@RequestMapping("/user/add") public String toAdd() { return "user/add"; } @RequestMapping("/user/update") public String toUpdate() { return "user/update"; }
之后运行无误即可配置成功!
到此这篇关于SpringBoot整合Shiro的环境搭建教程的文章就介绍到这了,更多相关SpringBoot整合Shiro内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java调用ChatGPT(基于SpringBoot和Vue)实现可连续对话和流式输出的ChatGPT API
这篇文章主要介绍了Java调用ChatGPT(基于SpringBoot和Vue),实现可连续对话和流式输出的ChatGPT API(可自定义实现AI助手),文中代码示例介绍的非常详细,感兴趣的朋友可以参考下2023-04-04MyBatis在insert插入操作时返回主键ID的配置(推荐)
这篇文章主要介绍了MyBatis在insert插入操作时返回主键ID的配置的相关资料,需要的朋友可以参考下2017-10-10Spring Security基于JWT实现SSO单点登录详解
这篇文章主要介绍了Spring Security基于JWT实现SSO单点登录详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-09-09Hadoop集成Spring的使用详细教程(快速入门大数据)
这篇文章主要介绍了Hadoop集成Spring的使用详细教程(快速入门大数据),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-01-01Java获取Jar、War包路径并生成可编辑修改的本地配置文件
这篇文章主要给大家介绍了关于Java如何获取Jar、War包路径并生成可编辑修改的本地配置文件,文中通过代码介绍的非常详细,对大家学习或者使用Java具有一定的参考借鉴价值,需要的朋友可以参考下2024-01-01
最新评论