gpt4 book ai didi

grails - Spring 安全核心和 config.groovy 中的捕获事件

转载 作者:行者123 更新时间:2023-12-02 14:01:43 26 4
gpt4 key购买 nike

使用 Spring 安全核心插件我试图捕捉事件,所以我正在使用

grails.plugin.springsecurity.useSecurityEventListener = true
grails.plugin.springsecurity.onInteractiveAuthenticationSuccessEvent = { e, appCtx ->

def request = org.codehaus.groovy.grails.plugins.springsecurity.SecurityRequestHolder.getRequest()
def session = request.getSession(false)
session.myvar=2
}

但它给了我:
2014-06-08 21:49:05,333 [http-bio-8080-exec-6] ERROR [/ammc].[default]  - Servlet.service() for servlet [default] in context with path [/ammc] threw exception
Message: No signature of method: groovy.util.ConfigObject.getRequest() is applicable for argument types: () values: []
Line | Method
->> 158 | doCall in Config$_run_closure5
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 95 | call in grails.plugin.springsecurity.SecurityEventListener
| 72 | onApplicationEvent in ''
| 49 | doFilter in grails.plugin.springsecurity.web.authentication.RequestHolderAuthenticationFilter
| 82 | doFilter . . . . . in grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter
| 1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 615 | run . . . . . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run in java.lang.Thread

请注意,配置文件中的第 158 行正是该行
def request = org.codehaus.groovy.grails.plugins.springsecurity.SecurityRequestHolder.getRequest()

这很疯狂,因为我没有在这一行中调用 groovy.util.ConfigObject.getRequest()

我已经尝试清理和编译,但没有任何改变。

同时如果我想捕捉失败登录事件,我必须捕捉什么事件?

更新

我正在使用 grails 2.3.8 和 spring-security-core:2.0-RC2

最佳答案

回答问题
这可能晚了,但是...
我相信你的意思

def request = grails.plugin.springsecurity.web.SecurityRequestHolder.getRequest()
(注意不同的包名)
这可能对@Bilel 没有太大帮助,但可能对遇到这个问题的其他人有帮助。
一个旁注:

which is crazy because I am not invoking groovy.util.ConfigObject.getRequest() in this line


当你看到奇怪的东西,比如 groovy.util.ConfigObject我注意到这通常意味着 Config 中的变量不存在。
另外,在另一个注意事项:
我不知道在 Config.groovy 中这样做是否是绝对要求,但我相信如果你注册一个监听器,这会变得更清晰。
这是我要做的:
import org.springframework.context.ApplicationListener
import org.springframework.security.authentication.event. InteractiveAuthenticationSuccessEvent

class MyLoginListener implements ApplicationListener<InteractiveAuthenticationSuccessEvent> {
void onApplicationEvent(InteractiveAuthenticationSuccessEvent event) {
def request = grails.plugin.springsecurity.web.SecurityRequestHolder.getRequest()
def session = request.getSession(false)
session.myvar=2
}
}
然后注册到 resources.groovy
beans = {
myLoginListener(MyLoginListener)
}
您需要 Config.groovy 中的以下行,但无论如何你可能已经有了它。
grails.plugin.springsecurity.useSecurityEventListener = true

关于grails - Spring 安全核心和 config.groovy 中的捕获事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24109962/

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