Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 理解Spring重定向_Java_Spring_Spring Mvc_Redirect_Spring Security - Fatal编程技术网

Java 理解Spring重定向

Java 理解Spring重定向,java,spring,spring-mvc,redirect,spring-security,Java,Spring,Spring Mvc,Redirect,Spring Security,我在Spring应用程序中遇到了一个小问题。我使用SpringSecurity来处理登录和注销。它工作得很好。然而,我的问题是关于春天的重定向。我要说的是:默认情况下,Spring安全性的配置方式是,成功注销后,它会将用户重定向到/login?logout,这完全正常,对于/login?错误也是如此 我试图实现一个简单的输入您的电子邮件在这里重置您的密码。页面位于/resetPassword。以下是模板的相关部分: <form name="f" th:action="@{/resetPas

我在Spring应用程序中遇到了一个小问题。我使用SpringSecurity来处理登录和注销。它工作得很好。然而,我的问题是关于春天的重定向。我要说的是:默认情况下,Spring安全性的配置方式是,成功注销后,它会将用户重定向到/login?logout,这完全正常,对于/login?错误也是如此

我试图实现一个简单的输入您的电子邮件在这里重置您的密码。页面位于/resetPassword。以下是模板的相关部分:

<form name="f" th:action="@{/resetPassword}" method="post" id="needs-validation" novalidate>
    <div class="form-group">
        <label for="email">Login email</label>
        <input type="email" id="email" name="email" class="form-control" required/>
    </div>
    <div class="form-actions">
        <button type="submit" class="btn btn-primary btn-block">Reset password</button>
    </div>
</form>
调用了一个方法,一切正常,但是:在浏览器中,我没有被重定向到/login?reset,但我被重定向到了更远的位置,更确切地说是返回到/login。我可以在Chrome的开发者工具中看到这一点

然而,我不知道为什么会这样。我还尝试了使用RedirectAttributes,返回RedirectView,但结果始终相同


有人能给我点线索吗?

您没有登录,所以Spring security会将您重定向到登录。
您必须将其配置为角色\u ANONYMOUS以允许访问resetpassword页。

我在我的安全配置中得到了以下信息:.antMatchers/resetpassword?.permitAll?.loginPage/login?.successForwardUrl/home?.permitAll。这还不够吗?如果没有,请你扩展你的答案并解释一下好吗?你达到/重置密码,然后你的控制器发送回浏览器好,现在转到/登录?重置,然后你的后端检查id/登录?可以达到重置,否则进入登录页面Yep,这是正确的。完成一些工作后,它将进入登录?重置。对不起,我还是不明白这有什么不对。我想应该可以转到/login?重置,因为登录页面设置为permitAll,不是吗?如果没有,那么当我在浏览器@ivan.rosinaOkay中手动键入地址时,/login?error和/login?logout怎么可能工作正常呢。你能解释一下吗?我接受这个答案。重定向是一条发送到浏览器的消息,在这种情况下调用另一个页面登录?重置,因此,新的调用是从SpringSecurity检查的,它仍然是匿名的,因此Spring security会将您带到登录页面。如果在匿名列表中添加登录?重置,则不会发生这种情况
@PostMapping("/resetPassword")
fun resetPasswordForEmail(@RequestParam("email") email: String): String {
    userFacade.resetPassword(email)
    return "redirect:/login?reset"
}