问答详情
源自:5-2 Shiro会话管理2

自定义SessionManager时,sessionKey 什么时候会强转成 WebSessionKey 实例?

if (sessionKey instanceof WebSessionKey){ // DefaultSessionKey
    request = ((WebSessionKey) sessionKey).getServletRequest();
    System.out.println("instanceof");
}
// 我试过,每次都没有进来,不知道什么原因。
// WebSessionKey 继承 DefaultSessionKey,当我强转时,就会抛出异常。


提问者:qq_南方 2018-09-07 22:51

个回答

  • qq_南方
    2018-09-08 21:52:05

    @Bean
    public DefaultWebSecurityManager securityManager() { // DefaultSecurityManager
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
        securityManager.setRealm(userRealm2());
        securityManager.setCacheManager(ehCacheManager());
        securityManager.setRememberMeManager(rememberMeManager());
        securityManager.setSessionManager(sessionManager()); // 自定义Session管理
        SecurityUtils.setSecurityManager(securityManager); // 初始化 SecurityManager
        return securityManager;
    }
    /* 我再最开始时,使用DefaultSecurityManager进行初始化,DefaultWebSecurityManager是其子类,
     * 我想是这个原因,我也验证了。
     */