gpt4 book ai didi

authentication - 从 Grails 中的过滤器定义 Controller 可访问变量

转载 作者:行者123 更新时间:2023-12-04 06:44:23 26 4
gpt4 key购买 nike

我正在 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
}
}
}
}
}

所有 Controller 方法都从读取请求对象的用户属性开始:
def actionName = {
def user = request.user
...
}

上面的代码有效,但我宁愿避免所有 Controller 方法中的重复代码。过滤器是否可以将用户对象绑定(bind)到一个名为“user”而不是“request.user”的变量,所有 Controller 都可以访问该变量?

我知道可能存在范围界定问题使这成为不可能,但 Grails 框架似乎能够在幕后创造相当多的魔力,所以我认为这可能值得一问。

最佳答案

在 Controller 中使用 beforeInterceptor 可能会有所帮助:

class LoginController {

def user

def beforeInterceptor = {
user = request.user
}

def index = {
render text:"index: ${user}"
}

def test = {
render text:"test: ${user}"
}
}

关于authentication - 从 Grails 中的过滤器定义 Controller 可访问变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/493926/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com