Spring Boot注销然后登录重定向到错误的URL

时间:2020-03-12 20:48:03

标签: spring-boot spring-security logout

因此,我添加了一个新的控制器方法,该方法无需注销即可注销用户,如下所示:

    public String quickLogout (HttpServletRequest request, HttpServletResponse response) {
        Authentication auth = SecurityContextHolder.getContext().getAuthentication();
        if (auth != null){
            new SecurityContextLogoutHandler().logout(request, response, auth);
        }
        return "redirect: /login?logout";
    }

这可以按预期工作,并且将用户注销,但是只要调用此方法,然后我尝试重新登录,就会被定向到以下URL:http://localhost:8080/%20/login?logout

它应该将其定向到:http://localhost:8080/

带确认然后登录的常规注销也没有此错误,并且在应用程序启动时的首次登录也没有此错误。我正在使用基本的Spring Security登录,所以不确定为什么要这样做。

有想法吗?

1 个答案:

答案 0 :(得分:0)

在评论中对鲍勃·唐(Bob Tang)表示敬意:是的,所有空格都在重定向中使用,所以代替:

return "redirect: /login?logout";

使用:

return "redirect:/login?logout";

否则会使用冒号和第一个正斜杠之间的空间,从而弄乱了导航。