抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

在使用jwt认证过程中,后端不用记录httpSession,也就可以禁用session,shiro有自带的session,同样也可以禁用。

1
2
3
4
5
6
7
8
@Bean
protected ShiroFilterChainDefinition shiroFilterChainDefinition() {
DefaultShiroFilterChainDefinition chainDefinition = new DefaultShiroFilterChainDefinition();
chainDefinition.addPathDefinition("/login", "anon");
chainDefinition.addPathDefinition("/logout", "anyRole[user]");
chainDefinition.addPathDefinition("/**", "noSessionCreation,anyRole[user]");
return chainDefinition;
}

noSessionCreation是在请求中关闭session的意思。

同时,还要注入名为SessionStorageEvaluator的bean

1
2
3
4
5
6
7
8
9
10
/**
* 禁用session, 不保存用户登录状态。保证每次请求都重新认证。
* 需要注意的是,如果用户代码里调用Subject.getSession()还是可以用session,如果要完全禁用,要配合下面的noSessionCreation的Filter来实现
*/
@Bean
protected SessionStorageEvaluator sessionStorageEvaluator() {
DefaultWebSessionStorageEvaluator sessionStorageEvaluator = new DefaultWebSessionStorageEvaluator();
sessionStorageEvaluator.setSessionStorageEnabled(false);
return sessionStorageEvaluator;
}

评论