【发布时间】:2015-07-06 15:58:54
【问题描述】:
我正在试验 Grails 3 及其 interceptors 的新概念。给定以下拦截器/控制器:
class AuthInterceptor {
// ...other stuff in here
boolean before() {
if(FizzBuzz.isFoo()) {
redirect(controller: auth, action: signin)
true
} else {
true
}
}
}
class AuthController {
AuthService authService
def signin() {
String username = params[username]
String password = params[password]
user = authService.authenticate(username, password)
if(user) {
SimpleSecurityUtils.setCurrentUser(user)
redirect(url: ??? INTENDED_DESTINATION ???)
} else {
// Auth failed.
redirect(action: failed)
}
}
}
-
AuthService是 Grails Service。我希望每个AuthController实例都有一个AuthService实例。我希望AuthController拥有prototype范围,这样我就不会存储状态,并且会为每个请求创建一个控制器。为了满足这些范围要求,我必须对两者 (AuthService/AuthController) 进行哪些更改? - 假设
AuthController#signin是由于拦截器内的redirect(controller:auth, action: signin)而执行的,我如何将用户(再次)重定向到他们的预期目的地(即,他们想要在拦截器拦截之前访问的 URL请求)来自上面的控制器操作?
【问题讨论】:
-
与你之前的帖子类似的问题,你有这个工作吗?您愿意分享一个工作示例吗?
标签: grails interceptor grails-controller grails-3.0