0

shiro 複数ログイン

フロント部分とバックエンド部分の 2 つの部分を持つ 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;
}
4

0 に答える 0