Spring security ZK应用程序。Spring security没有';t返回事件侦听器内部的用户
我有ZK和Spring Security的应用程序。我通过spring安全机制登录应用程序。在索引页上,我有一些动态创建的组件。“A”组件已单击侦听器Spring security ZK应用程序。Spring security没有';t返回事件侦听器内部的用户,spring-security,zk,Spring Security,Zk,我有ZK和Spring Security的应用程序。我通过spring安全机制登录应用程序。在索引页上,我有一些动态创建的组件。“A”组件已单击侦听器 ***point1** userComponent = new A("link"); userComponent.addEventListener(Events.ON_CLICK, new EventListener<Event>() { public void onEvent(Event event) throws
***point1**
userComponent = new A("link");
userComponent.addEventListener(Events.ON_CLICK, new EventListener<Event>() {
public void onEvent(Event event) throws Exception {
**point2**
//do something with current user
}
});
***第1点**
userComponent=新的链接;
userComponent.addEventListener(Events.ON_单击,新建EventListener(){
public void onEvent(事件)引发异常{
**第2点**
//对当前用户执行某些操作
}
});
在点1中,我尝试使用Authentication Authentication=SecurityContextHolder.getContext().getAuthentication()获取当前用户代码>它的工作完美,我收到登录用户。但是在第2点中,SecurityContextHolder.getContext().getAuthentication()返回null。如何在点击事件中获取当前用户
也许堆栈跟踪可以有所帮助。我在stacktrace中没有看到指向点2的SecurityFilters
这是指向点1的堆栈跟踪
堆栈跟踪到point2看起来您已经为与事件处理程序匹配的URL定义了一个空的筛选器链(我可以从第二个堆栈跟踪中包含的事实看出这一点)。因此您是正确的-请求绕过了Spring Security,因此不会获取当前用户信息。这在调试日志中应该很明显,因为您将看到一条消息,内容如下:
具有空筛选器列表或没有匹配的筛选器
在没有看到您的配置的情况下,很难准确地说出它是什么(我对zk一无所知),但是您应该能够轻松地调试来自浏览器的请求,并将它们与调试日志输出相匹配,调试日志输出详细解释了如何处理这些请求
如果您发布Ajax调用使用的配置和URL,那么给出准确答案应该会更容易。是的,您是对的。我使用了/zkau-is servlet来代替ZK事件