java 登录踢出_spring security 4 如何踢出用户?
項目用的是spring boot 1.3 全javaconfig 配置
目的 :
我要踢出一個登錄在線的用戶,踢出后,剔出的用戶再次訪問服務器的時候會去到登錄界面,
security 配置 :
http
.authorizeRequests()
.antMatchers("/app/views/assets/**", "/app/apk/**", "/assets/**", "/view/**")
.permitAll().anyRequest().authenticated()
.and()
.formLogin().loginPage("/login").loginProcessingUrl("/loginLoc")
.successHandler(customSuccessHandler).failureHandler(customErrorHandler)
.permitAll()
.and().sessionManagement().invalidSessionUrl("/login").maximumSessions(-1).maxSessionsPreventsLogin(true).sessionRegistry(sessionRegistry())
.and()
.and()
.logout().logoutSuccessUrl("/login").permitAll()
.and().csrf().disable();
踢出的代碼:
List allPrincipals = sessionRegistry.getAllPrincipals();
for (int j = 0; j < allPrincipals.size(); j++) {
CustomUser customUser = (CustomUser) allPrincipals.get(j);
if (customUser.getUsername().equals(username)) {
List allSessions = sessionRegistry.getAllSessions(customUser, false);
if (allSessions != null) {
for (int i = 0; i < allSessions.size(); i++) {
SessionInformation sessionInformation = allSessions.get(i);
sessionInformation.expireNow();
sessionRegistry.removeSessionInformation(sessionInformation.getSessionId());
}
}
}
}
執行倒是成功了,踢出后sessionRegistry.getAllPrincipals()返回確實是少了一個(已經沒有踢出的那個用戶了)。
但是剔出的用戶還是可以正常的訪問服務器,按理來說,踢出后再次訪問應該會找不到session然后跳轉到登錄去嗎? 莫非還要我自己在寫一個過濾器,每次都判斷這個用戶在不在sessionRegistry.getAllPrincipals()里面嗎?
怎么才能正常工作 ?
總結
以上是生活随笔為你收集整理的java 登录踢出_spring security 4 如何踢出用户?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 套娃_【leetcode编程题
- 下一篇: 找不到java.vbs_无法找到脚本*.