日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

java 登录踢出_spring security 4 如何踢出用户?

發(fā)布時(shí)間:2025/3/21 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 登录踢出_spring security 4 如何踢出用户? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

項(xiàng)目用的是spring boot 1.3 全javaconfig 配置

目的 :

我要踢出一個(gè)登錄在線的用戶,踢出后,剔出的用戶再次訪問服務(wù)器的時(shí)候會去到登錄界面,

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());

}

}

}

}

執(zhí)行倒是成功了,踢出后sessionRegistry.getAllPrincipals()返回確實(shí)是少了一個(gè)(已經(jīng)沒有踢出的那個(gè)用戶了)。

但是剔出的用戶還是可以正常的訪問服務(wù)器,按理來說,踢出后再次訪問應(yīng)該會找不到session然后跳轉(zhuǎn)到登錄去嗎? 莫非還要我自己在寫一個(gè)過濾器,每次都判斷這個(gè)用戶在不在sessionRegistry.getAllPrincipals()里面嗎?

怎么才能正常工作 ?

總結(jié)

以上是生活随笔為你收集整理的java 登录踢出_spring security 4 如何踢出用户?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。