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]

Reply via email to