作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用@EnableOAuth2Sso
。但我需要更改 successHandler,以便我可以在登录后更改重定向。
我该怎么做?
我追踪了代码的路径:
@EnableOAuth2Sso ->
OAuth2SsoCustomConfiguration ->
SsoSecurityConfigurer ->
OAuth2ClientAuthenticationConfigurer ->
OAuth2ClientAuthenticationProcessingFilter ->
AbstractAuthenticationProcessingFilter ->
successHandler
该路径中是否有任何地方可以让我更改 successHandler
?
也许可以在设置后访问过滤器,并修改OAuth2ClientAuthenticationProcessingFilter
。
最佳答案
您需要创建自己的 OAuth2ClientAuthenticationProcessingFilter 实例并将此过滤器添加到过滤器链中。
下面给出的是片段:`
private OAuth2ClientAuthenticationProcessingFilter oauth2SsoFilter() {
ApplicationContext applicationContext = this.getApplicationContext();
OAuth2SsoProperties sso = applicationContext.getBean(OAuth2SsoProperties.class);
OAuth2RestOperations restTemplate = applicationContext.getBean(UserInfoRestTemplateFactory.class)
.getUserInfoRestTemplate();
ResourceServerTokenServices tokenServices = applicationContext.getBean(ResourceServerTokenServices.class);
OAuth2ClientAuthenticationProcessingFilter filter = new OAuth2ClientAuthenticationProcessingFilter(sso
.getLoginPath());
filter.setRestTemplate(restTemplate);
filter.setTokenServices(tokenServices);
filter.setApplicationEventPublisher(applicationContext);
filter.setAuthenticationSuccessHandler(new YourOwnAuthenticationSuccessHandler());
return filter;
}
可以通过以下方式将过滤器添加到过滤器链:
http.addFilterBefore(oauth2SsoFilter(), BasicAuthenticationFilter.class);
关于java - 如何更改 OAuth2ClientAuthenticationProcessingFilter 的 successHandler?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49121916/
我是一名优秀的程序员,十分优秀!