问题描述
我正在基于其他应用程序提供的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())