欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringSecurity實(shí)現(xiàn)踢出指定用戶的示例

 更新時(shí)間:2025年03月01日 09:20:40   作者:m0_74824002  
SpringSecurity中使用SessionRegistryImpl類可以獲取session信息并踢出用戶,這篇文章主要介紹了SpringSecurity實(shí)現(xiàn)踢出指定用戶的示例,需要的朋友可以參考下

SpringSecurity中可以使用 SessionRegistry 的實(shí)現(xiàn)類 SessionRegistryImpl 來(lái)獲取session相關(guān)信息,可以通過(guò)這個(gè)實(shí)現(xiàn)類來(lái)踢出用戶。

SpringSecurity配置

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Autowired
    ISysUserService userService;
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/webjars/**","/asserts/**","/login").permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin()
                .loginPage("/login")
                .loginProcessingUrl("/loginPost")
                .failureUrl("/login?error=true")
                .defaultSuccessUrl("/index")
                .and()
                .logout()
                .logoutUrl("/logout")
                .addLogoutHandler(new MyLogoutHandler())
                .logoutSuccessUrl("/login")
                .and()
                .rememberMe()
                .userDetailsService(userService)
                .tokenRepository(jdbcTokenRepository())
                //保存登錄狀態(tài)時(shí)間,單位是秒
                .tokenValiditySeconds(60*60*3)
                .and()
                //關(guān)閉請(qǐng)求頭中的frame選項(xiàng),不限制iframe
                .headers().frameOptions().disable()
                //關(guān)閉跨域
                .and().csrf().disable()
                .sessionManagement()
                //無(wú)效session跳轉(zhuǎn)
                .invalidSessionUrl("/login")
                //同時(shí)登陸多個(gè)只保留一個(gè)
                .maximumSessions(1)
                //過(guò)期session跳轉(zhuǎn)
                .expiredUrl("/login")
                .sessionRegistry(sessionRegistry());
    }
    /** 注冊(cè)SessionRegistry*/
    @Bean
    public SessionRegistry sessionRegistry(){
        return new SessionRegistryImpl();
   	}

控制器

/** 踢出用戶 */
    @PreAuthorize("hasRole('管理員')")
    @GetMapping("/logout/{id}")
    @ResponseBody
    public String logout(@PathVariable Long id) throws NoSuchFieldException {
    	//通過(guò)id查詢用戶
        SysUser sysUser = userService.selectUserByUserId(id);
        //獲取所有principal信息
        List<Object> allPrincipals = sessionRegistry.getAllPrincipals();
        for (Object allPrincipal : allPrincipals) {
            User user=(User)allPrincipal;
            //判斷是否跟傳遞的id所找到的用戶登錄名一致
            if(user.getUsername().equals(sysUser.getLoginName())){
                List<SessionInformation> allSessions = sessionRegistry.getAllSessions(allPrincipal, false);
                for (SessionInformation session : allSessions) {
                	//使當(dāng)前session過(guò)期
                    session.expireNow();
                }
            }
        }
        return "ok";
    }

到此這篇關(guān)于SpringSecurity踢出指定用戶的文章就介紹到這了,更多相關(guān)SpringSecurity踢出指定用戶內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Mybatis注解寫法(附10余個(gè)常用例子)

    詳解Mybatis注解寫法(附10余個(gè)常用例子)

    這篇文章主要介紹了詳解Mybatis注解寫法(附10余個(gè)常用例子),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • alibaba?seata服務(wù)端具體實(shí)現(xiàn)

    alibaba?seata服務(wù)端具體實(shí)現(xiàn)

    seata是來(lái)處理分布式服務(wù)之間互相調(diào)用的事務(wù)問(wèn)題,本文重點(diǎn)給大家介紹alibaba-seata實(shí)現(xiàn)方法,文中通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • Spring Boot讀取resources目錄文件方法詳解

    Spring Boot讀取resources目錄文件方法詳解

    這篇文章主要介紹了Spring Boot讀取resources目錄文件方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • SpringBoot應(yīng)用啟動(dòng)慢的原因分析及優(yōu)化方法

    SpringBoot應(yīng)用啟動(dòng)慢的原因分析及優(yōu)化方法

    在使用Spring Boot進(jìn)行開(kāi)發(fā)時(shí),快速啟動(dòng)應(yīng)用程序是一個(gè)非常重要的需求,然而,在某些情況下,我們會(huì)遇到Spring Boot應(yīng)用啟動(dòng)緩慢的問(wèn)題,本文將分析Spring Boot應(yīng)用啟動(dòng)慢的常見(jiàn)原因,并提供一些優(yōu)化方法,需要的朋友可以參考下
    2024-08-08
  • Java設(shè)計(jì)模式中的裝飾者模式

    Java設(shè)計(jì)模式中的裝飾者模式

    這篇文章主要介紹了Java設(shè)計(jì)模式中的裝飾者模式,裝飾者模式即Decorator?Pattern,裝飾模式是在不必改變?cè)愇募褪褂美^承的情況下,動(dòng)態(tài)地?cái)U(kuò)展一個(gè)對(duì)象的功能
    2022-07-07
  • Java關(guān)鍵字volatile知識(shí)點(diǎn)總結(jié)

    Java關(guān)鍵字volatile知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于Java關(guān)鍵字volatile知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-01-01
  • @GrpcServise?注解的作用和使用示例詳解

    @GrpcServise?注解的作用和使用示例詳解

    @GrpcService 是一個(gè) Spring Boot 處理器,它會(huì)查找實(shí)現(xiàn)了 grpc::BindableService 接口的類,并將其包裝成一個(gè) Spring Bean 對(duì)象,這篇文章主要介紹了@GrpcServise?注解的作用和使用,需要的朋友可以參考下
    2023-05-05
  • SpringBoot導(dǎo)出PDF的四種實(shí)現(xiàn)方法詳解

    SpringBoot導(dǎo)出PDF的四種實(shí)現(xiàn)方法詳解

    在Spring?Boot應(yīng)用程序中實(shí)現(xiàn)PDF導(dǎo)出功能,可以選擇多種庫(kù)和技術(shù)棧,本文為大家整理了四種常見(jiàn)的方法,感興趣的小伙伴可以參考一下
    2025-02-02
  • java并發(fā)編程之ThreadLocal詳解

    java并發(fā)編程之ThreadLocal詳解

    在鎖的使用中會(huì)導(dǎo)致運(yùn)行效率降低,ThreadLocal的使用徹底避免對(duì)共享資源的競(jìng)爭(zhēng),同時(shí)又可以不影響效率。本文詳細(xì)講解了ThreadLocal,需要了解的小伙伴可以看一看這篇文章
    2021-08-08
  • 關(guān)于SpringBoot的spring.factories文件詳細(xì)說(shuō)明

    關(guān)于SpringBoot的spring.factories文件詳細(xì)說(shuō)明

    spring.factories 文件是 Spring Boot 自動(dòng)配置機(jī)制的核心部分之一,它位于每個(gè) Spring Boot 自動(dòng)配置模塊的 META-INF 目錄下,經(jīng)??吹?nbsp;spring.factories 文件,卻沒(méi)有對(duì)它進(jìn)行深入的了解和分析,今天我們就一起揭開(kāi)面紗看看它的內(nèi)在,需要的朋友可以參考下
    2024-12-12

最新評(píng)論