是否可以在应用程序的前端远程删除Cookie?

问题描述

我正在基于其他应用程序提供的API调用从我的应用程序远程注销。 通常,当用户使用我的应用程序注销时,我使用Spring .logout()。deleteCookies()。

现在我们为许多应用程序使用一个授权服务器,我们需要确保从其中一个注销也将注销其他应用程序。

因此,基本思想是授权服务器将调用我的API,例如/ user / logout 当我接到这个电话时,我想要和spring .logout()。deleteCookies()一样的东西。我该如何实现?

是否可以将新的API添加到Spring配置中?说更改此配置:

.logout()
.logoutUrl(logoutUrl)
.invalidateHttpSession(true)
.clearauthentication(true)
.logoutSuccessUrl("/")
.deleteCookies("JSESSIONID")

类似:

.logout()
.logoutUrl(logoutUrl || 'api/user/logout)
.invalidateHttpSession(true)
.clearauthentication(true)
.logoutSuccessUrl("/")
.deleteCookies("JSESSIONID")

我整个弹簧的配置是:

http
                        .addFilterBefore(new RedirectUrlFilter(projectDomainPath),OAuth2LoginAuthenticationFilter.class)
                        .csrf().disable().cors()
                        .and()
                        .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.IF_required)
                        .and()
                        .authorizeRequests().antMatchers("/static/**","/logout","/api/user/k_push_not_before","/api/user/k_logout").permitAll()
                        .anyRequest().authenticated()
                        .and()
                        .addFilter(new JwtAuthorizationFilter(authenticationManager(),secret,clientId,"nblues",tokenVerificationUrl))
                        .logout()
                        .logoutUrl(logoutUrl)
                        .logoutRequestMatcher(new AntPathRequestMatcher("/api/user/k_push_not_before"))
                        .invalidateHttpSession(true)
                        .clearauthentication(true)
                        .logoutSuccessHandler(new CustomlogoutSuccessHandler())
                        .logoutSuccessUrl("/")
                        .deleteCookies("JSESSIONID")
                        .and()
                        .oauth2Login()
                        .loginPage(DEFAULT_AUTHORIZATION_REQUEST_BASE_URI + "/" + realm);

解决方法

您可以尝试这样的事情

 let records =    [{
       "Name":"Stephen","Age":10,"School":"PSB"
    },{
       "Name":"Rocky","Age":09,"School":"BSR"
    }];

await Post.create(records);  

甚至添加.logout().permitAll() .deleteCookies("JSESSIONID") .invalidateHttpSession(true) .clearAuthentication(true) .logoutUrl("/logout") .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))

可能看起来像这样

.logoutSuccessHandler(new CustomLogoutSuccessHandler())