Hi All, In my project I use the Tapestry5-Acegi project and made that work following the example and with some help from the forum, thanks... Now I'm trying to make a more realistic version of a login where I can control the validation on the login form and also based on user roles redirect the user to the right page. I have created a page like this: public class LoginPage { /* PRIVATE MEMBERS */ @Persist private String userName; private String password; @Component private Form form; /* INJECTED COMPONENTS, SERVICES ETC. */ @Component(id = "password") private PasswordField passwordField; @Inject private AuthenticationManager authenticationManager;
/* GETTERS AND SETTERS */ public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } /* ACTION METHODS */ protected String onSuccess() { UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken(userName, password); Authentication authResult; try { authResult = authenticationManager.authenticate(authRequest); if (!authResult.isAuthenticated()) { form.recordError(passwordField, "Invalid user name or password."); return null; } GrantedAuthority[] gratedAuthorityArray = authResult.getAuthorities(); Set<GrantedAuthority> grantedAuthoritySet = new HashSet<GrantedAuthority>(); for (int i = 0; i < gratedAuthorityArray.length; i++) { grantedAuthoritySet.add(gratedAuthorityArray[i]); System.out.println("Adding " + gratedAuthorityArray[i] + " to set"); } // DEBUGGING.... System.out.println("successful login for: " + userName); System.out.println("authResult.getCredentials() = " + authResult.getCredentials()); System.out.println("authResult.getPrincipal() = " + authResult.getPrincipal()); System.out.println("authResult.getAuthorities(): "); for (int i = 0; i < gratedAuthorityArray.length; i++) { System.out.println("Auth no " + (i + 1) + " = '" + gratedAuthorityArray[i] + "'"); } // END DEBUGGING... if (grantedAuthoritySet.contains("ROLE_ADMIN")) { System.out.println("Redirecting to Secure page..."); return "Secure"; } else if (grantedAuthoritySet.contains("ROLE_SOME_OTHER_ROLE")) { System.out.println("redirecting to some other page"); return "SOME_OTHER_PAGE"; } } catch (AuthenticationException authenticationException) { System.out.println("user with username = " + userName + "couldn't be authenticated with Acegi"); } return null; } } In my Jetty Console I can see that I get the Authetication: Adding ROLE_ADMIN to set Adding ROLE_MANAGER to set Adding ROLE_USER to set successful login for: jacob authResult.getCredentials() = jacob authResult.getPrincipal() = UserDetailsBean { username = jacob password = jacob accountNonExpired = true passwordaccountNonLocked = true credentialsNonExpired = true enabled = true grantedAuthorities { 'ROLE_ADMIN' 'ROLE_MANAGER' 'ROLE_USER' } } authResult.getAuthorities(): Auth no 1 = 'ROLE_ADMIN' Auth no 2 = 'ROLE_MANAGER' Auth no 3 = 'ROLE_USER' [INFO] TimingFilter Request time: 26 ms [INFO] TimingFilter Request time: 18 ms [INFO] TimingFilter Request time: 2 ms but the redirection to the pages doesn't work... and if I change the last return null; to return "Secure"; then I get this exception instead: [ERROR] Secure Render queue error in BeginRender[Secure]: Access is denied org.apache.tapestry.ioc.internal.util.TapestryException: Access is denied at org.apache.tapestry.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:884) at org.apache.tapestry.internal.structure.ComponentPageElementImpl.access$100(ComponentPageElementImpl.java:54) at org.apache.tapestry.internal.structure.ComponentPageElementImpl$11.render(ComponentPageElementImpl.java:342) at org.apache.tapestry.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:63) at org.apache.tapestry.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:84) at $PageRenderQueue_118f7af20ee.render($PageRenderQueue_118f7af20ee.java) at $PageRenderQueue_118f7af20e7.render($PageRenderQueue_118f7af20e7.java) at org.apache.tapestry.services.TapestryModule$19.renderMarkup(TapestryModule.java:1293) at org.apache.tapestry.services.TapestryModule$23.renderMarkup(TapestryModule.java:1402) at $MarkupRenderer_118f7af20f2.renderMarkup($MarkupRenderer_118f7af20f2.java) at org.apache.tapestry.services.TapestryModule$22.renderMarkup(TapestryModule.java:1383) at $MarkupRenderer_118f7af20f2.renderMarkup($MarkupRenderer_118f7af20f2.java) at org.apache.tapestry.services.TapestryModule$21.renderMarkup(TapestryModule.java:1365) at $MarkupRenderer_118f7af20f2.renderMarkup($MarkupRenderer_118f7af20f2.java) at org.apache.tapestry.services.TapestryModule$20.renderMarkup(TapestryModule.java:1347) at $MarkupRenderer_118f7af20f2.renderMarkup($MarkupRenderer_118f7af20f2.java) at $MarkupRenderer_118f7af20ec.renderMarkup($MarkupRenderer_118f7af20ec.java) at org.apache.tapestry.internal.services.PageMarkupRendererImpl.renderPageMarkup(PageMarkupRendererImpl.java:55) at $PageMarkupRenderer_118f7af20ea.renderPageMarkup($PageMarkupRenderer_118f7af20ea.java) at org.apache.tapestry.internal.services.PageResponseRendererImpl.renderPageResponse(PageResponseRendererImpl.java:57) at $PageResponseRenderer_118f7af20bb.renderPageResponse($PageResponseRenderer_118f7af20bb.java) at org.apache.tapestry.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:59) at org.apache.tapestry.services.TapestryModule$29.handle(TapestryModule.java:1607) at $PageRenderRequestHandler_118f7af20bc.handle($PageRenderRequestHandler_118f7af20bc.java) at $PageRenderRequestHandler_118f7af20b1.handle($PageRenderRequestHandler_118f7af20b1.java) at org.apache.tapestry.internal.services.PageRenderDispatcher.process(PageRenderDispatcher.java:97) at org.apache.tapestry.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:73) at $Dispatcher_118f7af20b8.dispatch($Dispatcher_118f7af20b8.java) at $Dispatcher_118f7af20a9.dispatch($Dispatcher_118f7af20a9.java) at org.apache.tapestry.services.TapestryModule$13.service(TapestryModule.java:944) at com.bergoo.webshop.services.AppModule$1.service(AppModule.java:94) at $RequestFilter_118f7af20a8.service($RequestFilter_118f7af20a8.java) at $RequestHandler_118f7af20aa.service($RequestHandler_118f7af20aa.java) at org.apache.tapestry.internal.services.LocalizationFilter.service(LocalizationFilter.java:42) at $RequestHandler_118f7af20aa.service($RequestHandler_118f7af20aa.java) at org.apache.tapestry.services.TapestryModule$3.service(TapestryModule.java:553) at $RequestHandler_118f7af20aa.service($RequestHandler_118f7af20aa.java) at org.apache.tapestry.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:79) at $RequestHandler_118f7af20aa.service($RequestHandler_118f7af20aa.java) at nu.localhost.tapestry.acegi.services.internal.RequestFilterWrapper$1.doFilter(RequestFilterWrapper.java:60) at nu.localhost.tapestry.acegi.services.internal.AcegiExceptionTranslationFilter.doFilter(AcegiExceptionTranslationFilter.java:67) at nu.localhost.tapestry.acegi.services.internal.RequestFilterWrapper.service(RequestFilterWrapper.java:54) at $RequestFilter_118f7af20a4.service($RequestFilter_118f7af20a4.java) at $RequestHandler_118f7af20aa.service($RequestHandler_118f7af20aa.java) at org.apache.tapestry.services.TapestryModule$2.service(TapestryModule.java:520) at $RequestHandler_118f7af20aa.service($RequestHandler_118f7af20aa.java) at org.apache.tapestry.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:93) at org.apache.tapestry.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:84) at org.apache.tapestry.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:77) at org.apache.tapestry.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:106) at $RequestHandler_118f7af20aa.service($RequestHandler_118f7af20aa.java) at $RequestHandler_118f7af209e.service($RequestHandler_118f7af209e.java) at org.apache.tapestry.services.TapestryModule$12.service(TapestryModule.java:924) at org.apache.tapestry.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62) at $HttpServletRequestFilter_118f7af209d.service($HttpServletRequestFilter_118f7af209d.java) at $HttpServletRequestHandler_118f7af209f.service($HttpServletRequestHandler_118f7af209f.java) at nu.localhost.tapestry.acegi.services.internal.HttpServletRequestFilterWrapper$1.doFilter(HttpServletRequestFilterWrapper.java:57) at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) at nu.localhost.tapestry.acegi.services.internal.HttpServletRequestFilterWrapper.service(HttpServletRequestFilterWrapper.java:52) at $HttpServletRequestFilter_118f7af209c.service($HttpServletRequestFilter_118f7af209c.java) at $HttpServletRequestHandler_118f7af209f.service($HttpServletRequestHandler_118f7af209f.java) at nu.localhost.tapestry.acegi.services.internal.HttpServletRequestFilterWrapper$1.doFilter(HttpServletRequestFilterWrapper.java:57) at org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81) at nu.localhost.tapestry.acegi.services.internal.HttpServletRequestFilterWrapper.service(HttpServletRequestFilterWrapper.java:52) at $HttpServletRequestFilter_118f7af209b.service($HttpServletRequestFilter_118f7af209b.java) at $HttpServletRequestHandler_118f7af209f.service($HttpServletRequestHandler_118f7af209f.java) at nu.localhost.tapestry.acegi.services.internal.HttpServletRequestFilterWrapper$1.doFilter(HttpServletRequestFilterWrapper.java:57) at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:135) at nu.localhost.tapestry.acegi.services.internal.HttpServletRequestFilterWrapper.service(HttpServletRequestFilterWrapper.java:52) at $HttpServletRequestFilter_118f7af209a.service($HttpServletRequestFilter_118f7af209a.java) at $HttpServletRequestHandler_118f7af209f.service($HttpServletRequestHandler_118f7af209f.java) at nu.localhost.tapestry.acegi.services.internal.HttpServletRequestFilterWrapper$1.doFilter(HttpServletRequestFilterWrapper.java:57) at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271) at nu.localhost.tapestry.acegi.services.internal.HttpServletRequestFilterWrapper.service(HttpServletRequestFilterWrapper.java:52) at $HttpServletRequestFilter_118f7af2099.service($HttpServletRequestFilter_118f7af2099.java) at $HttpServletRequestHandler_118f7af209f.service($HttpServletRequestHandler_118f7af209f.java) at nu.localhost.tapestry.acegi.services.internal.HttpServletRequestFilterWrapper$1.doFilter(HttpServletRequestFilterWrapper.java:57) at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249) at nu.localhost.tapestry.acegi.services.internal.HttpServletRequestFilterWrapper.service(HttpServletRequestFilterWrapper.java:52) at $HttpServletRequestFilter_118f7af2098.service($HttpServletRequestFilter_118f7af2098.java) at $HttpServletRequestHandler_118f7af209f.service($HttpServletRequestHandler_118f7af209f.java) at $HttpServletRequestHandler_118f7af2097.service($HttpServletRequestHandler_118f7af2097.java) at org.apache.tapestry.TapestryFilter.doFilter(TapestryFilter.java:168) at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821) at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75) at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821) at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:471) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568) at org.mortbay.http.HttpContext.handle(HttpContext.java:1530) at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633) at org.mortbay.http.HttpContext.handle(HttpContext.java:1482) at org.mortbay.http.HttpServer.service(HttpServer.java:909) at org.mortbay.http.HttpConnection.service(HttpConnection.java:820) at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986) at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837) at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245) at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534) Caused by: org.acegisecurity.AccessDeniedException: Access is denied at org.acegisecurity.vote.AffirmativeBased.decide(AffirmativeBased.java:68) at $AccessDecisionManager_118f7af2115.decide($AccessDecisionManager_118f7af2115.java) at org.acegisecurity.intercept.AbstractSecurityInterceptor.beforeInvocation(AbstractSecurityInterceptor.java:323) at nu.localhost.tapestry.acegi.services.internal.StaticSecurityChecker.checkBefore(StaticSecurityChecker.java:43) at $SecurityChecker_118f7af20ce.checkBefore($SecurityChecker_118f7af20ce.java) at com.bergoo.webshop.pages.Secure.beginRender(Secure.java) at org.apache.tapestry.internal.structure.ComponentPageElementImpl$11$1.run(ComponentPageElementImpl.java:338) at org.apache.tapestry.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:874) ... 98 more The Secure.java has a @Secured("ROLE_ADMIN") annotation and therefor I should be granted access to this page. Anyone have any Idears? Thanks in advance, Jacob -- View this message in context: http://www.nabble.com/T5%3A-Problem-with-login-form-with-Acegi-tp16364295p16364295.html Sent from the Tapestry - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]