这篇文章主要介绍了Springboot整合Shiro的代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
<强> 1,导入依赖
强>
& lt; !——shiro祝辞 & lt; dependency> & lt; groupId> org.apache.shiro & lt; artifactId> shiro-spring & lt; version> 1.4.0 & lt;/dependency>
<强> 2,创建ShiroRealm。java文件强>
(这里按照需求,只做登录认证这块)
包com.hyqfx.manager.shiro; 进口com.baomidou.mybatisplus.mapper.EntityWrapper; 进口com.hyqfx.manager.entity.po.SystemAdmin; 进口com.hyqfx.manager.service.ISystemAdminService; 进口org.apache.shiro.authc。*; 进口org.apache.shiro.authz.AuthorizationInfo; 进口org.apache.shiro.realm.AuthorizingRealm; 进口org.apache.shiro.subject.PrincipalCollection; 进口org.springframework.beans.factory.annotation.Autowired; 公开课ShiroRealm延伸AuthorizingRealm { @ autowired 私人ISystemAdminService adminService;//授权 @Override 保护AuthorizationInfo doGetAuthorizationInfo (PrincipalCollection PrincipalCollection) {/*//获取登录用户名 字符串名称=(字符串)principalCollection.getPrimaryPrincipal ();//查询用户名称 用户用户=loginService.findByName(名称);//添加角色和权限 SimpleAuthorizationInfo SimpleAuthorizationInfo=new SimpleAuthorizationInfo (); (角色角色:user.getRoles ()) {//添加角色 simpleAuthorizationInfo.addRole (role.getRoleName ()); (许可权限:role.getPermissions ()) {//添加权限 simpleAuthorizationInfo.addStringPermission (permission.getPermission ()); } } 返回simpleAuthorizationInfo; */返回null; }//认证 @Override 保护AuthenticationInfo doGetAuthenticationInfo (AuthenticationToken AuthenticationToken)抛出AuthenticationException {//加这一步的目的是在帖子请求的时候会先进认证,然后在到请求 如果(authenticationToken.getPrincipal ()==null) { 返回null; }//获取用户信息 .toString字符串名称=authenticationToken.getPrincipal () (); SystemAdmin管理=adminService。selectOne(新的EntityWrapper() .eq(“用户名”,名字)); 如果(管理==null) { 返回null; 其他}{//这里验证authenticationToken和simpleAuthenticationInfo的信息 SimpleAuthenticationInfo SimpleAuthenticationInfo=new SimpleAuthenticationInfo(名称、admin.getPassword () .toString (), getName ()); 返回simpleAuthenticationInfo; } } }
<强> 3,创建ShiroConfiguration。java文件
强>
包com.becl.config; 进口com.becl.shiro.PasswordMatcher; 进口com.becl.shiro.ShiroRealm; 进口org.apache.shiro.mgt.SecurityManager; 进口org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor; 进口org.apache.shiro.spring.web.ShiroFilterFactoryBean; 进口org.apache.shiro.web.mgt.DefaultWebSecurityManager; 进口org.springframework.context.annotation.Bean; 进口org.springframework.context.annotation.Configuration; 进口java.util.HashMap; 进口java.util.Map; @ configuration 公开课ShiroConfiguration {//将自己的验证方式加入容器 @ bean 公共ShiroRealm myShiroRealm () { ShiroRealm myShiroRealm=new ShiroRealm (); myShiroRealm.setCredentialsMatcher (passwordMatcher());//装配自定义的密码验证方式 返回myShiroRealm; }//配置加密方式//配置了一下,这货就是验证不过,,改成手动验证算了,以后换加密方式也方便 @ bean 公共PasswordMatcher PasswordMatcher () { 返回新PasswordMatcher (); }//权限管理,配置主要是领域的管理认证 @ bean 公共SecurityManager SecurityManager () { DefaultWebSecurityManager securityManager=new DefaultWebSecurityManager (); securityManager.setRealm (myShiroRealm ()); 返回securityManager; }//过滤工厂,设置对应的过滤条件和跳转条件 @ bean 公共ShiroFilterFactoryBean ShiroFilterFactoryBean (SecurityManager SecurityManager) { ShiroFilterFactoryBean ShiroFilterFactoryBean=new ShiroFilterFactoryBean (); shiroFilterFactoryBean.setSecurityManager (securityManager); String> Map<字符串;地图=new HashMap<字符串,String> ();//登出 map.put(“/注销”、“注销”);//不需要认证 map.put(“/注销”,“不久”); map.put(“/登录*”、“不久”); map.put (“/shiroError”、“不久”);//对所有用户认证 map.put (“/* *”、“authc”);//map.put(“/* *”、“不久”);//登录 shiroFilterFactoryBean.setLoginUrl("/登录");//首页 shiroFilterFactoryBean.setSuccessUrl(“/指数”);//错误页面,认证不通过跳转 shiroFilterFactoryBean.setUnauthorizedUrl ("/shiroError "); shiroFilterFactoryBean.setFilterChainDefinitionMap(地图); 返回shiroFilterFactoryBean; }//加入注解的使用,不加入这个注解不生效 @ bean 公共AuthorizationAttributeSourceAdvisor AuthorizationAttributeSourceAdvisor (SecurityManager SecurityManager) { AuthorizationAttributeSourceAdvisor AuthorizationAttributeSourceAdvisor=new AuthorizationAttributeSourceAdvisor (); authorizationAttributeSourceAdvisor.setSecurityManager (securityManager); 返回authorizationAttributeSourceAdvisor; } }Springboot整合Shiro的代码实例