【发布时间】:2010-10-04 09:10:30
【问题描述】:
我正在 Grails 中编写一个小型 Web 应用程序,为了确保所有用户都经过身份验证,我使用了以下过滤器:
class LoginFilters {
static filters = {
loginCheck(controller:'*', action:'*') {
before = {
if (session.user_id) {
request.user = User.get(session.user_id)
} else if (!actionName.equals("login")) {
redirect(controller: "login", action: "login")
return false
}
}
}
}
}
而所有控制器方法都是从读取请求对象的用户属性开始的:
def actionName = {
def user = request.user
...
}
上面的代码有效,但我宁愿避免所有控制器方法中的重复代码。过滤器是否可以将用户对象绑定到一个名为“user”而不是“request.user”的变量,所有控制器都可以访问该变量?
我知道可能存在范围界定问题导致这不可能,但 Grails 框架似乎能够在幕后创造相当多的魔力,所以我认为这可能值得一问。
【问题讨论】:
标签: authentication grails controller