SpringBoot整合Shiro的环境搭建教程

Elita ·
更新时间:2024-09-20
· 580 次阅读

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内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网!



环境搭建 springboot 环境 shiro 教程

需要 登录 后方可回复, 如果你还没有账号请 注册新账号