Hi,
I use smartGWt nightbuild 02-06-2011, GWT 2.2, Firefox 4.
I have secured my application with spring 3.05
Now when my application starts I'd like to determine whether I need to show a login screen or if the user already has a session.
So in onModuleLoad
I expected that I'll try to load up the current user. If it fails I'would continue in RPCManager LoginRequiredCallback. But it never reaches there. Instead there is an exception:
when I add
then I can catch the exception here. But I guess this isn't the right approach.
Why wasn't LoginRequiredCallback called? What did I miss?
Thanks,
Zdary
I use smartGWt nightbuild 02-06-2011, GWT 2.2, Firefox 4.
I have secured my application with spring 3.05
Now when my application starts I'd like to determine whether I need to show a login screen or if the user already has a session.
So in onModuleLoad
Code:
RPCManager.setLoginRequiredCallback(new LoginRequiredCallback(){ @Override public void loginRequired(int i, RPCRequest rpcRequest, RPCResponse rpcResponse) { GWT.log("in login required"); setLoginScreen(); } } DataSource loginDS = DataSource.get("loginDS"); loginDS.fetchData(new Criteria(), new DSCallback() { @Override public void execute(DSResponse response, Object rawData, DSRequest request) { Record[] records = response.getData(); for (Record pojo: records) { userName = pojo.getAttribute("login"); setHomeScreen(); } } });
Code:
=== 2011-06-03 16:48:20,880 [l0-2] INFO RequestContext - URL: '/smartrise/sc/IDACall', User-Agent: 'Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1': Moz (Gecko) with Accept-Encoding header === 2011-06-03 16:48:20,915 [l0-2] DEBUG XML - Parsed XML from (in memory stream): 2ms === 2011-06-03 16:48:20,920 [l0-2] DEBUG XML - Parsed XML from C:\zdary\svn\smartRISE\RISE2\war\smartrise\sc\system\schema\List.ds.xml: 3ms === 2011-06-03 16:48:20,922 [l0-2] DEBUG RPCManager - Processing 1 requests. === 2011-06-03 16:48:20,933 [l0-2] DEBUG RPCManager - Request #1 (DSRequest) payload: { criteria:{ }, operationConfig:{ dataSource:"loginDS", operationType:"fetch" }, appID:"builtinApplication", operation:"loginDS_fetch", oldValues:{ } } === 2011-06-03 16:48:20,938 [l0-2] INFO IDACall - Performing 1 operation(s) === 2011-06-03 16:48:20,940 [l0-2] WARN RequestContext - dsRequest.execute() failed: java.lang.SecurityException: DataSource 'loginDS', operationType 'fetch', operationId 'loginDS_fetch'. No authenticated user at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:1525) at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:173) at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:130) at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:95) at com.isomorphic.servlet.IDACall.doPost(IDACall.java:54) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097) at com.isomorphic.servlet.CompressionFilter.doFilter(CompressionFilter.java:259) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368) at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109) at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) at cz.bcom.smartrise.server.authentication.SpringConcurrentSessionFilter.doFilter(SpringConcurrentSessionFilter.java:54) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) === 2011-06-03 16:48:20,943 [l0-2] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8 === 2011-06-03 16:48:20,944 [l0-2] DEBUG RPCManager - non-DMI response, dropExtraFields: false === 2011-06-03 16:48:20,945 [l0-2] INFO Compression - /smartrise/sc/IDACall: 217 -> 173 bytes
Code:
loginDS.addHandleErrorHandler(new HandleErrorHandler() { @Override public void onHandleError(ErrorEvent event) { if (event.getResponse().getStatus() == -1) { event.cancel(); } } });
Why wasn't LoginRequiredCallback called? What did I miss?
Thanks,
Zdary
Comment