首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在登录时修改spring boot安全重定向,使其不重定向回登录?

如何在登录时修改spring boot安全重定向,使其不重定向回登录?
EN

Stack Overflow用户
提问于 2020-07-17 22:47:25
回答 1查看 63关注 0票数 0

我们有一个spring boot应用程序配置为oauth2客户机。有时候,有些人的浏览器会向应用程序发送这样的请求:

https://app/login?code=XXX&state=ZZZ

代码和状态是从以前的身份验证尝试中缓存的,现在无效。

Spring security发现这个人没有经过身份验证,所以它将他们重定向到/login,然后由它执行整个oauth2身份验证,但是在他们通过身份验证之后,spring security会将他们发送回/login?code=XXX&state=ZZZ,因为这是他们最初的请求。当发生这种情况时,它会尝试验证代码和状态,但失败了,并将它们发送到错误页面。在支持应用程序时,这是一个问题,因为用户是经过身份验证的。

有没有办法改变存储初始请求的逻辑,这样如果是/login,我们就可以用/代替它?也许我们还没有想过其他的解决方案。任何帮助都将不胜感激。

我们的应用程序目前使用的是Spring boot2,但我已经在最新版本的Spring boot3上尝试过了,这仍然是一个问题。我们一直无法改变浏览器的行为,所以如果可能的话,我们想在服务器上解决这个问题。

下面是我们的配置:

代码语言:javascript
复制
@Override
protected void configure(HttpSecurity http) throws Exception {
    http.antMatcher("/**")
            .authorizeRequests()
            .antMatchers("/info", "/static/**").permitAll()
            .anyRequest().authenticated().and()
            .csrf();
}
EN

回答 1

Stack Overflow用户

发布于 2020-07-18 01:07:22

如果我没理解错的话,你只想避免重定向(所以SpringSecurity的defaultSuccessUrl不是一个选项)。

如果是这样,您可以像这样实现您自己的AuthenricationSuccessHandler:

代码语言:javascript
复制
...
.successHandler(
    (request, response, authentication) -> {
        if (request.getRequestURI().equals("/your/invalid/path"))
            response.sendRedirect("/");
    }
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62956422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档