Shiro的过滤器链,导致小程序无法用短信验证码登录,发送验证的时候,通过sessionId ,存储验证码,但是登录的时候,根据这个sessionId拿的时候,却拿不到了。但是我改了之后,我发现管理后台又登录不了了,想请教一下,应该怎么改?
/**
* Shiro的过滤器链
*/
@Bean
public ShiroFilterFactoryBean shiroFilter(DefaultWebSecurityManager securityManager) {
ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
shiroFilter.setSecurityManager(securityManager);
/**
* 默认的登陆访问url
*/
shiroFilter.setLoginUrl("/login");
/**
* 登陆成功后跳转的url
*/
shiroFilter.setSuccessUrl("/");
/**
* 没有权限跳转的url
*/
shiroFilter.setUnauthorizedUrl("/global/error");
/**
* 覆盖默认的user拦截器(默认拦截器解决不了ajax请求 session超时的问题,若有更好的办法请及时反馈作者)
*/
HashMap<String, Filter> myFilters = new HashMap<>();
myFilters.put("user", new GunsUserFilter());
shiroFilter.setFilters(myFilters);
/**
* 配置shiro拦截器链
*
* anon 不需要认证
* authc 需要认证
* user 验证通过或RememberMe登录的都可以
*
* 当应用开启了rememberMe时,用户下次访问时可以是一个user,但不会是authc,因为authc是需要重新认证的
*
* 顺序从上到下,优先级依次降低
*
* api开头的接口,走rest api鉴权,不走shiro鉴权
*
*/
Map<String, String> hashMap = new LinkedHashMap<>();
for (String nonePermissionRe : Const.NONE_PERMISSION_RES) {
hashMap.put(nonePermissionRe, "anon");
}
hashMap.put("/**", "user");
shiroFilter.setFilterChainDefinitionMap(hashMap);
return shiroFilter;
}
/**
* 系统常量
*
* @author thedreamtree
* @date 2017年2月12日 下午9:42:53
*/
public interface Const {
/**
* 管理员角色的名字
*/
String ADMIN_NAME = "administrator";
/**
* 管理员id
*/
Long ADMIN_ID = 1L;
/**
* 超级管理员角色id
*/
Long ADMIN_ROLE_ID = 1L;
/**
* 不需要权限验证的资源表达式
*/
List<String> NONE_PERMISSION_RES = CollectionUtil.newLinkedList(
"/wechatApi/**"
);
}