Springboot整合Shiro的代码实例

  

这篇文章主要介绍了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的代码实例