了解Spring重定向

时间:2017-09-20 20:00:55

标签: java spring spring-mvc redirect spring-security

我在Spring应用程序中遇到了一个小问题。我正在使用Spring Security来处理登录和注销。它工作得非常好。然而,我的问题是关于Spring的重定向。我在说什么:默认情况下,Spring Security的配置方式是,在成功注销后,它会将用户重定向到/login?logout,其工作完全正常,/login?error也一样。

我正在尝试实施一个简单的"在此输入您的电子邮件以重置密码"。该页面位于/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>

我处理的方法看起来像这样:

@PostMapping("/resetPassword")
fun resetPasswordForEmail(@RequestParam("email") email: String): String {
    userFacade.resetPassword(email)
    return "redirect:/login?reset"
}

一个方法被调用,一切都很好,:在浏览器中,我没有被重定向到/login?reset但我被重定向到更远,更具体地说是回到{{1 }}。我可以在Chrome中的开发者工具中看到它。

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

任何人都可以给我一些东西吗?

1 个答案:

答案 0 :(得分:1)

您没有登录,因此Spring安全会将您重定向到登录名。 您必须使用ROLE_ANONYMOUS对其进行配置,以允许访问resetpassword页面。