-
FEATURED COMPONENTS
First time here? Check out the FAQ!
Hi all.
I have app with ZK and Spring Security. I logged in application through spring security mechanism. On index page I have some components which are created dynamically. "A" component has click listener;
**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
}
});
In point1 I try to get current user with Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
It's work perfect and I receive logged user. But in point2 SecurityContextHolder.getContext().getAuthentication()
returns null. How to get current user inside on click event?
Maybe stack traces can help. I see no SecurityFilters in stacktrace to point2
This is stack trace to point1
Thread [qtp2047697789-24] (Suspended (breakpoint at line 50 in DataObjectCellsModel))
RolesCellsModel(DataObjectCellsModel<E>).render(Row, E, int) line: 50
RolesCellsModel(DataObjectCellsModel<E>).render(Row, Object, int) line: 1
Grid$Renderer.render(Row, int) line: 1009
Grid.doInitRenderer() line: 900
Grid.onInitRender() line: 859
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
Method.invoke(Object, Object...) line: 597
Grid(AbstractComponent).service(Event, Scope, List<EventListenerInfo>, EventHandler, Method, boolean) line: 2718
Grid(AbstractComponent).service(Event, Scope) line: 2648
EventProcessor.process() line: 136
UiEngineImpl.processEvent(Desktop, Component, Event) line: 1702
UiEngineImpl.process(Desktop, Event) line: 1487
UiEngineImpl.execNewPage0(Execution, PageDefinition, Richlet, Page, Writer) line: 463
UiEngineImpl.execNewPage(Execution, PageDefinition, Page, Writer) line: 316
DHtmlLayoutServlet.process(Session, HttpServletRequest, HttpServletResponse, String, boolean) line: 215
DHtmlLayoutServlet.doGet(HttpServletRequest, HttpServletResponse) line: 135
DHtmlLayoutServlet(HttpServlet).service(HttpServletRequest, HttpServletResponse) line: 735
DHtmlLayoutServlet(HttpServlet).service(ServletRequest, ServletResponse) line: 848
ServletHolder.handle(Request, ServletRequest, ServletResponse) line: 669
ServletHandler.doHandle(String, Request, HttpServletRequest, HttpServletResponse) line: 457
ServletHandler(ScopedHandler).handle(String, Request, HttpServletRequest, HttpServletResponse) line: 137
ConstraintSecurityHandler(SecurityHandler).handle(String, Request, HttpServletRequest, HttpServletResponse) line: 575
SessionHandler.doHandle(String, Request, HttpServletRequest, HttpServletResponse) line: 231
JettyWebAppContext(ContextHandler).doHandle(String, Request, HttpServletRequest, HttpServletResponse) line: 1075
ServletHandler.doScope(String, Request, HttpServletRequest, HttpServletResponse) line: 384
SessionHandler.doScope(String, Request, HttpServletRequest, HttpServletResponse) line: 193
JettyWebAppContext(ContextHandler).doScope(String, Request, HttpServletRequest, HttpServletResponse) line: 1009
JettyWebAppContext(ScopedHandler).handle(String, Request, HttpServletRequest, HttpServletResponse) line: 135
Dispatcher.forward(ServletRequest, ServletResponse, DispatcherType) line: 276
Dispatcher.forward(ServletRequest, ServletResponse) line: 103
DefaultServlet.doGet(HttpServletRequest, HttpServletResponse) line: 566
DefaultServlet(HttpServlet).service(HttpServletRequest, HttpServletResponse) line: 735
DefaultServlet(HttpServlet).service(ServletRequest, ServletResponse) line: 848
ServletHolder.handle(Request, ServletRequest, ServletResponse) line: 669
ServletHandler$CachedChain.doFilter(ServletRequest, ServletResponse) line: 1448
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) line: 330
FilterSecurityInterceptor.invoke(FilterInvocation) line: 118
FilterSecurityInterceptor.doFilter(ServletRequest, ServletResponse, FilterChain) line: 84
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) line: 342
ExceptionTranslationFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 113
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) line: 342
SessionManagementFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 103
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) line: 342
AnonymousAuthenticationFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 113
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) line: 342
SecurityContextHolderAwareRequestFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 54
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) line: 342
RequestCacheAwareFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 45
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) line: 342
BasicAuthenticationFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 150
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) line: 342
UsernamePasswordAuthenticationFilter(AbstractAuthenticationProcessingFilter).doFilter(ServletRequest, ServletResponse, FilterChain) line: 183
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) line: 342
LogoutFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 105
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) line: 342
SecurityContextPersistenceFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 87
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) line: 342
FilterChainProxy.doFilterInternal(ServletRequest, ServletResponse, FilterChain) line: 192
FilterChainProxy.doFilter(ServletRequest, ServletResponse, FilterChain) line: 160
DelegatingFilterProxy.invokeDelegate(Filter, ServletRequest, ServletResponse, FilterChain) line: 237
DelegatingFilterProxy.doFilter(ServletRequest, ServletResponse, FilterChain) line: 167
ServletHandler$CachedChain.doFilter(ServletRequest, ServletResponse) line: 1419
ServletHandler.doHandle(String, Request, HttpServletRequest, HttpServletResponse) line: 455
ServletHandler(ScopedHandler).handle(String, Request, HttpServletRequest, HttpServletResponse) line: 137
ConstraintSecurityHandler(SecurityHandler).handle(String, Request, HttpServletRequest, HttpServletResponse) line: 557
SessionHandler.doHandle(String, Request, HttpServletRequest, HttpServletResponse) line: 231
JettyWebAppContext(ContextHandler).doHandle(String, Request, HttpServletRequest, HttpServletResponse) line: 1075
ServletHandler.doScope(String, Request, HttpServletRequest, HttpServletResponse) line: 384
SessionHandler.doScope(String, Request, HttpServletRequest, HttpServletResponse) line: 193
JettyWebAppContext(ContextHandler).doScope(String, Request, HttpServletRequest, HttpServletResponse) line: 1009
JettyWebAppContext(ScopedHandler).handle(String, Request, HttpServletRequest, HttpServletResponse) line: 135
ContextHandlerCollection.handle(String, Request, HttpServletRequest, HttpServletResponse) line: 255
HandlerCollection.handle(String, Request, HttpServletRequest, HttpServletResponse) line: 154
JettyServer(HandlerWrapper).handle(String, Request, HttpServletRequest, HttpServletResponse) line: 116
JettyServer(Server).handle(AbstractHttpConnection) line: 368
AsyncHttpConnection(AbstractHttpConnection).handleRequest() line: 488
AsyncHttpConnection(AbstractHttpConnection).headerComplete() line: 932
AbstractHttpConnection$RequestHandler.headerComplete() line: 994
HttpParser.parseNext() line: 640
HttpParser.parseAvailable() line: 235
AsyncHttpConnection.handle() line: 82
SelectChannelEndPoint.handle() line: 628
SelectChannelEndPoint$1.run() line: 52
QueuedThreadPool.runJob(Runnable) line: 608
QueuedThreadPool$3.run() line: 543
Thread.run() line: 662
and stack trace to point2
DataObjectCellsModel$1.onEvent(Event) line: 54
AbstractComponent.onEvent(EventListener, Event) line: 2736
A(AbstractComponent).service(Event, Scope, List<EventListenerInfo>, EventHandler, Method, boolean) line: 2707
A(AbstractComponent).service(Event, Scope) line: 2648
EventProcessor.process() line: 136
UiEngineImpl.processEvent(Desktop, Component, Event) line: 1702
UiEngineImpl.process(Desktop, Event) line: 1487
UiEngineImpl.execUpdate(Execution, List<AuRequest>, AuWriter) line: 1204
DHtmlUpdateServlet.process(Session, HttpServletRequest, HttpServletResponse) line: 558
DHtmlUpdateServlet.doGet(HttpServletRequest, HttpServletResponse) line: 456
DHtmlUpdateServlet.doPost(HttpServletRequest, HttpServletResponse) line: 464
DHtmlUpdateServlet(HttpServlet).service(HttpServletRequest, HttpServletResponse) line: 755
DHtmlUpdateServlet(HttpServlet).service(ServletRequest, ServletResponse) line: 848
ServletHolder.handle(Request, ServletRequest, ServletResponse) line: 669
ServletHandler$CachedChain.doFilter(ServletRequest, ServletResponse) line: 1448
FilterChainProxy.doFilterInternal(ServletRequest, ServletResponse, FilterChain) line: 186
FilterChainProxy.doFilter(ServletRequest, ServletResponse, FilterChain) line: 160
DelegatingFilterProxy.invokeDelegate(Filter, ServletRequest, ServletResponse, FilterChain) line: 237
DelegatingFilterProxy.doFilter(ServletRequest, ServletResponse, FilterChain) line: 167
ServletHandler$CachedChain.doFilter(ServletRequest, ServletResponse) line: 1419
ServletHandler.doHandle(String, Request, HttpServletRequest, HttpServletResponse) line: 455
ServletHandler(ScopedHandler).handle(String, Request, HttpServletRequest, HttpServletResponse) line: 137
ConstraintSecurityHandler(SecurityHandler).handle(String, Request, HttpServletRequest, HttpServletResponse) line: 557
SessionHandler.doHandle(String, Request, HttpServletRequest, HttpServletResponse) line: 231
JettyWebAppContext(ContextHandler).doHandle(String, Request, HttpServletRequest, HttpServletResponse) line: 1075
ServletHandler.doScope(String, Request, HttpServletRequest, HttpServletResponse) line: 384
SessionHandler.doScope(String, Request, HttpServletRequest, HttpServletResponse) line: 193
JettyWebAppContext(ContextHandler).doScope(String, Request, HttpServletRequest, HttpServletResponse) line: 1009
JettyWebAppContext(ScopedHandler).handle(String, Request, HttpServletRequest, HttpServletResponse) line: 135
ContextHandlerCollection.handle(String, Request, HttpServletRequest, HttpServletResponse) line: 255
HandlerCollection.handle(String, Request, HttpServletRequest, HttpServletResponse) line: 154
JettyServer(HandlerWrapper).handle(String, Request, HttpServletRequest, HttpServletResponse) line: 116
JettyServer(Server).handle(AbstractHttpConnection) line: 368
AsyncHttpConnection(AbstractHttpConnection).handleRequest() line: 488
AsyncHttpConnection(AbstractHttpConnection).content(Buffer) line: 943
AbstractHttpConnection$RequestHandler.content(Buffer) line: 1004
HttpParser.parseNext() line: 861
HttpParser.parseAvailable() line: 240
AsyncHttpConnection.handle() line: 82
SelectChannelEndPoint.handle() line: 628
SelectChannelEndPoint$1.run() line: 52
QueuedThreadPool.runJob(Runnable) line: 608
QueuedThreadPool$3.run() line: 543
Thread.run() line: 662
Asked: 2013-02-24 19:12:08 +0800
Seen: 27 times
Last updated: Feb 24 '13
Have you enabled ZK Event thread? If so then disable it as Spring Security maintains user context information in servlet thread whereas if you have enabled ZK event threads then that information will not be copied over to event threads (Note: By default event threads are disabled since ZK 5+ versio)
ashishd ( 2013-02-25 01:48:03 +0800 )editZK event thread is disabled by default. My spring security configuration is http://pastebin.com/cyLtJLwC , zk.xml is empty - only <zk></zk> Maybe it is incompatibility of libraries - I use spring-3.0.7, spring-security-3.1.3, zk-6.0.1, zkspring-core-3.1.1, zkspring-security-3.1.1
siarheinavatski ( 2013-02-27 23:27:34 +0800 )edit