@Configuration
public class ShiroConfig {
public ShiroConfig(){
System.out.println("ShiroConfig init ......");
}
/**
* shiro过滤器配置
*/
@Bean
public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager){
System.out.println("ShiroConfiguration.shirFilter()");
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
shiroFilterFactoryBean.setSecurityManager(securityManager);
//拦截器
Map<String,String> filterChainDefinitionMap = new LinkedHashMap<String, String>();
//权限配置
filterChainDefinitionMap.put("/user/adduser","perms[ClinetUser:name]");
//配置不会被拦截的链接 顺序判断 相关静态资源
filterChainDefinitionMap.put("/assets/**","anon");
filterChainDefinitionMap.put("/css/**","anon");
filterChainDefinitionMap.put("/font/**","anon");
filterChainDefinitionMap.put("/images/**","anon");
filterChainDefinitionMap.put("/js/**","anon");
filterChainDefinitionMap.put("/products/**","anon");
filterChainDefinitionMap.put("/Widget/**","anon");
//配置退出其中退出的代码shiro 已经帮我们实现了
filterChainDefinitionMap.put("/logout","logout");
//所有的url都必须认证通过才可以访问
filterChainDefinitionMap.put("/**","authc");
//未授权界面
shiroFilterFactoryBean.setUnauthorizedUrl("/403");
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
return shiroFilterFactoryBean;
}
/**
* 加密方式配置
*
*/
@Bean
public HashedCredentialsMatcher hashedCredentialsMatcher(){
HashedCredentialsMatcher hashedCredentialsMatcher = new HashedCredentialsMatcher();
hashedCredentialsMatcher.setHashAlgorithmName("md5");
hashedCredentialsMatcher.setHashIterations(2);
return hashedCredentialsMatcher;
}
/**
* 认证器配置
*
*/
@Bean
public MyShiroRelam myShiroRelam(){
MyShiroRelam myShiroRelam = new MyShiroRelam();
return myShiroRelam;
}
/**
* 安全管理配置
*
*/
@Bean
public SecurityManager securityManager(){
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
securityManager.setRealm(myShiroRealm());
return securityManager;
}
private Realm myShiroRealm() {
return myShiroRelam();
}
/**
*开启@RequirePermission注解的配置
* @param securityManager
*
*/
@Bean
public AuthorizationAttributeSourceAdvisor auththorizationAttributeSourceAdvisor(SecurityManager securityManager){
AuthorizationAttributeSourceAdvisor auththorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
auththorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
return auththorizationAttributeSourceAdvisor;
}
}