shiro多次登录
我有一个Web应用程序,它有两个部分:前端部分和后端部分。这两个部分都需要一个用户登录页面。 会员需要使用/ signin登录前端部分。 管理员需要使用/ admin / signin登录后端部分。
public ShiroFilterFactoryBean shiroFilter(WebSecurityManager securityManager){
ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
shiroFilter.setSecurityManager(securityManager);
Map<String, Filter> filterMap = Maps.newLinkedHashMap();
FormAuthenticationFilter adminAuthc = new FormAuthenticationFilter();
adminAuthc.setLoginUrl("/admin/signin");
adminAuthc.setSuccessUrl("/admin/course");
filterMap.put("adminAuthc", adminAuthc);
FormAuthenticationFilter authc = new FormAuthenticationFilter();
adminAuthc.setLoginUrl("/signin");
adminAuthc.setSuccessUrl("/");
filterMap.put("authc", authc);
shiroFilter.setFilters(filterMap);
Map<String, String> filterChainDefinitionMap = Maps.newLinkedHashMap();
filterChainDefinitionMap.put("/signout", "logout");
filterChainDefinitionMap.put("/style/**", "anon");
filterChainDefinitionMap.put("/javascript/**", "anon");
filterChainDefinitionMap.put("/image/**", "anon");
filterChainDefinitionMap.put("/flash/**", "anon");
filterChainDefinitionMap.put("/favicon.ico", "anon");
filterChainDefinitionMap.put("/captcha/**", "anon");
filterChainDefinitionMap.put("/course", "anon");
filterChainDefinitionMap.put("/course/**", "anon");
filterChainDefinitionMap.put("/course/*/collect", "authc");
filterChainDefinitionMap.put("/course/*/uncollect", "authc");
filterChainDefinitionMap.put("/course/study/record", "authc");
filterChainDefinitionMap.put("/**", "authc");
filterChainDefinitionMap.put("/admin/**", "adminAuthc");
shiroFilter.setFilterChainDefinitionMap(filterChainDefinitionMap);
return shiroFilter;
}