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