我正在使用 Spring Security 进行身份验证。登录和注销按钮位于页面布局上,所有页面都使用该布局。我有一个 BookController,它需要创建操作的参数(例如,图像 ID):
class BookController {
@Secured("ROLE_USER")
def create() {
def someImage = params.imageId
...
}
@Secured("ROLE_USER")
def show() {
...
}
...
}
我的登录控制器是:
class LoginController {
...
def auth() {
...
redirect uri: SpringSecurityUtils.securityConfig.successHandler.defaultTargetUrl
}
...
}
这将在登录成功后将用户重定向到基本 URL。我想让用户始终被重定向到引用 URL,这是他成功登录之前的 URL。
例如:用户没有登录,他在home/index,想要访问book/create,只有登录用户可以访问。在这种情况下,Spring Security 会将用户重定向到 login/auth 并(在他成功登录后)重定向到 /(这是基本 URL)。
我想让重定向转到用户试图访问的 URL,在这种情况下是 book/create。任何其他操作也应如此。如果 home/index 上的未登录用户尝试访问 book/show/32333,他将被重定向到 login/auth,并在成功登录后返回 book/show/32333。
我该如何实施?