shiro配置springboot的基本配置
标准配置
对比 https://www.cnblogs.com/xiaozhang666/p/12058341.html 的对应注入查看
package com.zys.sys.config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; @ConfigurationProperties(prefix ="shiro") @Data public class ShiroPeopertoes { private String hashAlgorithmName = "md5"; //散列次数 private Integer hashIterations = 2; //登陆页面 private String loginUrl; //未授权的页面 private String unauthorizedUrl; private String[] anonUrls; private String logoutUrl; private String[] authcUrls; }
package com.zys.sys.config; import at.pollux.thymeleaf.shiro.dialect.ShiroDialect; import com.sun.org.apache.bcel.internal.generic.RETURN; import com.zys.sys.UserRealm.UserRealm; import org.apache.shiro.authc.credential.HashedCredentialsMatcher; import org.apache.shiro.spring.web.ShiroFilterFactoryBean; import org.apache.shiro.web.mgt.DefaultWebSecurityManager; import org.apache.shiro.mgt.SecurityManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.filter.DelegatingFilterProxy; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Configuration @EnableConfigurationProperties(ShiroPeopertoes.class) public class ShiroAutoCofig { @Autowired private ShiroPeopertoes sp; /* * 创建凭证匹配器 * * */ @Bean public HashedCredentialsMatcher credentialsMatcher(){ HashedCredentialsMatcher credentialsMatcher = new HashedCredentialsMatcher(); credentialsMatcher.setHashAlgorithmName(sp.getHashAlgorithmName()); credentialsMatcher.setHashIterations(sp.getHashIterations()); return credentialsMatcher; } /* * 创建 Realm * */ @Bean public UserRealm userRealm(HashedCredentialsMatcher credentialsMatcher){ UserRealm userRealm = new UserRealm(); //注入凭证匹配器 userRealm.setCredentialsMatcher(credentialsMatcher); return userRealm; } /** * 声明安全管理器 */ @Bean("securityManager") public SecurityManager securityManager(UserRealm userRealm){ DefaultWebSecurityManager dwm = new DefaultWebSecurityManager(); dwm.setRealm(userRealm); return dwm; } /* 配置shiro的过滤器 这里面的id必须和web.xml里面的配置一样 */ @Bean("shiroFilter") public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager){ ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); //安全管理器 shiroFilterFactoryBean.setSecurityManager(securityManager); //注入登陆页面 shiroFilterFactoryBean.setLoginUrl(sp.getLoginUrl()); //注入未授权的页面地址 shiroFilterFactoryBean.setUnauthorizedUrl(sp.getUnauthorizedUrl()); //注入过滤器 Map<String,String> filter = new HashMap<>(); //注入放行的地址 if(sp.getAnonUrls() != null && sp.getAnonUrls().length > 0){ String[] anonUrls = sp.getAnonUrls(); for (String anonUrl : anonUrls) { filter.put(anonUrl,"anon"); } } //注入登出地址 if(sp.getLogoutUrl() != null){ filter.put(sp.getLogoutUrl(),"logout"); } //注入拦截的地址 if(sp.getAuthcUrls() != null && sp.getAuthcUrls().length > 0){ String[] authcUrls = sp.getAuthcUrls(); for (String authcUrl : authcUrls) { filter.put(authcUrl,"authc"); } } shiroFilterFactoryBean.setFilterChainDefinitionMap(filter); return shiroFilterFactoryBean; } /* 注册过滤器 web.xml */ @Bean public FilterRegistrationBean<DelegatingFilterProxy> filterRegistrationBean(){ FilterRegistrationBean<DelegatingFilterProxy> bean = new FilterRegistrationBean<>(); DelegatingFilterProxy proxy = new DelegatingFilterProxy(); bean.addInitParameter("targetFilterLifecycle","true"); bean.addInitParameter("targetBeanName","shiroFilter"); List<String> servletNames = new ArrayList<>(); servletNames.add(DispatcherServletAutoConfiguration.DEFAULT_DISPATCHER_SERVLET_BEAN_NAME); bean.setServletNames(servletNames); return bean; } /* 再html页面能用shiro标签 */ @Bean(name = "shiroDialect") public ShiroDialect shiroDialect(){ return new ShiroDialect(); } }
相关推荐
xclxcl 2020-08-03
zmzmmf 2020-08-03
likesyour 2020-08-01
杜鲁门 2020-11-05
luckyxl0 2020-08-16
Dullonjiang 2020-08-09
MicroBoy 2020-08-02
ganjing 2020-08-02
zmzmmf 2020-07-09
MicroBoy 2020-07-05
zzhao 2020-06-26
子云 2020-06-18
visionzheng 2020-06-07
neweastsun 2020-06-04
ErixHao 2020-06-03
GDreams0 2020-06-01
ganjing 2020-05-29
zmzmmf 2020-05-28
nullcy 2020-05-26