package com.fzzy.igds.dzhwk.config;
|
|
import com.ruoyi.framework.config.ShiroConfig;
|
import com.ruoyi.framework.shiro.web.CustomShiroFilterFactoryBean;
|
import org.apache.shiro.mgt.SecurityManager;
|
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
import javax.servlet.Filter;
|
import java.util.LinkedHashMap;
|
import java.util.Map;
|
|
/**
|
* 权限配置加载
|
*
|
* @author ruoyi
|
*/
|
@Configuration
|
public class ShiroConfig1 extends ShiroConfig {
|
|
/**
|
* 登录地址
|
*/
|
@Value("${shiro.user.loginUrl}")
|
private String loginUrl;
|
|
/**
|
* 权限认证失败地址
|
*/
|
@Value("${shiro.user.unauthorizedUrl}")
|
private String unauthorizedUrl;
|
|
/**
|
* Shiro过滤器配置
|
*/
|
@Bean
|
public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
|
CustomShiroFilterFactoryBean shiroFilterFactoryBean = new CustomShiroFilterFactoryBean();
|
// Shiro的核心安全接口,这个属性是必须的
|
shiroFilterFactoryBean.setSecurityManager(securityManager);
|
// 身份认证失败,则跳转到登录页面的配置
|
shiroFilterFactoryBean.setLoginUrl(loginUrl);
|
// 权限认证失败,则跳转到指定页面
|
shiroFilterFactoryBean.setUnauthorizedUrl(unauthorizedUrl);
|
// Shiro连接约束配置,即过滤链的定义
|
LinkedHashMap<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
|
// 对静态资源设置匿名访问
|
filterChainDefinitionMap.put("/favicon.ico**", "anon");
|
filterChainDefinitionMap.put("/ruoyi.png**", "anon");
|
filterChainDefinitionMap.put("/html/**", "anon");
|
filterChainDefinitionMap.put("/css/**", "anon");
|
filterChainDefinitionMap.put("/docs/**", "anon");
|
filterChainDefinitionMap.put("/fonts/**", "anon");
|
filterChainDefinitionMap.put("/img/**", "anon");
|
filterChainDefinitionMap.put("/ajax/**", "anon");
|
filterChainDefinitionMap.put("/js/**", "anon");
|
filterChainDefinitionMap.put("/axui/**", "anon");
|
filterChainDefinitionMap.put("/ruoyi/**", "anon");
|
filterChainDefinitionMap.put("/captcha/captchaImage**", "anon");
|
// 退出 logout地址,shiro去清除session
|
filterChainDefinitionMap.put("/logout", "logout");
|
// 不需要拦截的访问
|
filterChainDefinitionMap.put("/login/**", "anon,captchaValidate");
|
filterChainDefinitionMap.put("/messageLogin", "anon");
|
// 注册相关
|
filterChainDefinitionMap.put("/register", "anon,captchaValidate");
|
|
//接口路径
|
filterChainDefinitionMap.put("/api/**", "anon");
|
//电子货位卡暂时放开
|
filterChainDefinitionMap.put("/dzhwk/**", "anon");
|
filterChainDefinitionMap.put("/profile/**", "anon");
|
|
//微信服务
|
filterChainDefinitionMap.put("/wechat/**", "anon"); //微信公众号静态资源
|
filterChainDefinitionMap.put("/api-wechat/**", "anon"); //微信服务接口路径
|
|
Map<String, Filter> filters = new LinkedHashMap<String, Filter>();
|
filters.put("captchaValidate", captchaValidateFilter());
|
filters.put("kickout", kickoutSessionFilter());
|
// 注销成功,则跳转到指定页面
|
filters.put("logout", logoutFilter());
|
shiroFilterFactoryBean.setFilters(filters);
|
|
// 所有请求需要认证
|
filterChainDefinitionMap.put("/**", "user,kickout");
|
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
|
|
return shiroFilterFactoryBean;
|
}
|
}
|