It won't matter.  That's why you use the @Secured("ROLE_ADMIN") annotation.

At best, an unauthenticated user will have ROLE_ANONYMOUS if the
AnonymousAuthenticationProvider is used.  They will get an AccessDenied
exception.

I'm playing with a little older code that coughs up a hairball when it hits
one of those exceptions, but I think the newer tapestry5-acegi does the
appropriate redirection to whatever access-denied page you want.  That could
be the login page.

Jonathan



> -----Original Message-----
> From: Mahen Perera [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, April 01, 2008 10:11 AM
> To: Tapestry users
> Subject: RE: T5: Problem with login form with Acegi
> 
> Quick Question:
> How can we avoid the situation where a user tries to directly access the
> URL corresponding to the page named "Secure" in this case. I mean
> without going thru the login form.
> 
> Thanks
> 
> 
> 
> -----Original Message-----
> From: Jacob Bergoo [mailto:[EMAIL PROTECTED]
> Sent: 28 March 2008 23:28
> To: [email protected]
> Subject: T5: Problem with login form with Acegi
> 
> 
> 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(C
> omponentPageElementImpl.java:884)
>       at
> org.apache.tapestry.internal.structure.ComponentPageElementImpl.access$1
> 00(ComponentPageElementImpl.java:54)
>       at
> org.apache.tapestry.internal.structure.ComponentPageElementImpl$11.rende
> r(ComponentPageElementImpl.java:342)
>       at
> org.apache.tapestry.internal.services.RenderQueueImpl.run(RenderQueueImp
> l.java:63)
>       at
> org.apache.tapestry.internal.services.PageRenderQueueImpl.render(PageRen
> derQueueImpl.java:84)
>       at
> $PageRenderQueue_118f7af20ee.render($PageRenderQueue_118f7af20ee.java)
>       at
> $PageRenderQueue_118f7af20e7.render($PageRenderQueue_118f7af20e7.java)
>       at
> org.apache.tapestry.services.TapestryModule$19.renderMarkup(TapestryModu
> le.java:1293)
>       at
> org.apache.tapestry.services.TapestryModule$23.renderMarkup(TapestryModu
> le.java:1402)
>       at
> $MarkupRenderer_118f7af20f2.renderMarkup($MarkupRenderer_118f7af20f2.jav
> a)
>       at
> org.apache.tapestry.services.TapestryModule$22.renderMarkup(TapestryModu
> le.java:1383)
>       at
> $MarkupRenderer_118f7af20f2.renderMarkup($MarkupRenderer_118f7af20f2.jav
> a)
>       at
> org.apache.tapestry.services.TapestryModule$21.renderMarkup(TapestryModu
> le.java:1365)
>       at
> $MarkupRenderer_118f7af20f2.renderMarkup($MarkupRenderer_118f7af20f2.jav
> a)
>       at
> org.apache.tapestry.services.TapestryModule$20.renderMarkup(TapestryModu
> le.java:1347)
>       at
> $MarkupRenderer_118f7af20f2.renderMarkup($MarkupRenderer_118f7af20f2.jav
> a)
>       at
> $MarkupRenderer_118f7af20ec.renderMarkup($MarkupRenderer_118f7af20ec.jav
> a)
>       at
> org.apache.tapestry.internal.services.PageMarkupRendererImpl.renderPageM
> arkup(PageMarkupRendererImpl.java:55)
>       at
> $PageMarkupRenderer_118f7af20ea.renderPageMarkup($PageMarkupRenderer_118
> f7af20ea.java)
>       at
> org.apache.tapestry.internal.services.PageResponseRendererImpl.renderPag
> eResponse(PageResponseRendererImpl.java:57)
>       at
> $PageResponseRenderer_118f7af20bb.renderPageResponse($PageResponseRender
> er_118f7af20bb.java)
>       at
> org.apache.tapestry.internal.services.PageRenderRequestHandlerImpl.handl
> e(PageRenderRequestHandlerImpl.java:59)
>       at
> org.apache.tapestry.services.TapestryModule$29.handle(TapestryModule.jav
> a:1607)
>       at
> $PageRenderRequestHandler_118f7af20bc.handle($PageRenderRequestHandler_1
> 18f7af20bc.java)
>       at
> $PageRenderRequestHandler_118f7af20b1.handle($PageRenderRequestHandler_1
> 18f7af20b1.java)
>       at
> org.apache.tapestry.internal.services.PageRenderDispatcher.process(PageR
> enderDispatcher.java:97)
>       at
> org.apache.tapestry.internal.services.PageRenderDispatcher.dispatch(Page
> RenderDispatcher.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.ja
> va: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(Localiz
> ationFilter.java:42)
>       at
> $RequestHandler_118f7af20aa.service($RequestHandler_118f7af20aa.java)
>       at
> org.apache.tapestry.services.TapestryModule$3.service(TapestryModule.jav
> a:553)
>       at
> $RequestHandler_118f7af20aa.service($RequestHandler_118f7af20aa.java)
>       at
> org.apache.tapestry.internal.services.StaticFilesFilter.service(StaticFi
> lesFilter.java:79)
>       at
> $RequestHandler_118f7af20aa.service($RequestHandler_118f7af20aa.java)
>       at
> nu.localhost.tapestry.acegi.services.internal.RequestFilterWrapper$1.doF
> ilter(RequestFilterWrapper.java:60)
>       at
> nu.localhost.tapestry.acegi.services.internal.AcegiExceptionTranslationF
> ilter.doFilter(AcegiExceptionTranslationFilter.java:67)
>       at
> nu.localhost.tapestry.acegi.services.internal.RequestFilterWrapper.servi
> ce(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.jav
> a:520)
>       at
> $RequestHandler_118f7af20aa.service($RequestHandler_118f7af20aa.java)
>       at
> org.apache.tapestry.internal.services.CheckForUpdatesFilter$2.invoke(Che
> ckForUpdatesFilter.java:93)
>       at
> org.apache.tapestry.internal.services.CheckForUpdatesFilter$2.invoke(Che
> ckForUpdatesFilter.java:84)
>       at
> org.apache.tapestry.ioc.internal.util.ConcurrentBarrier.withRead(Concurr
> entBarrier.java:77)
>       at
> org.apache.tapestry.internal.services.CheckForUpdatesFilter.service(Chec
> kForUpdatesFilter.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.ja
> va:924)
>       at
> org.apache.tapestry.internal.services.IgnoredPathsFilter.service(Ignored
> PathsFilter.java:62)
>       at
> $HttpServletRequestFilter_118f7af209d.service($HttpServletRequestFilter_
> 118f7af209d.java)
>       at
> $HttpServletRequestHandler_118f7af209f.service($HttpServletRequestHandle
> r_118f7af209f.java)
>       at
> nu.localhost.tapestry.acegi.services.internal.HttpServletRequestFilterWr
> apper$1.doFilter(HttpServletRequestFilterWrapper.java:57)
>       at
> org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter
> (AnonymousProcessingFilter.java:125)
>       at
> nu.localhost.tapestry.acegi.services.internal.HttpServletRequestFilterWr
> apper.service(HttpServletRequestFilterWrapper.java:52)
>       at
> $HttpServletRequestFilter_118f7af209c.service($HttpServletRequestFilter_
> 118f7af209c.java)
>       at
> $HttpServletRequestHandler_118f7af209f.service($HttpServletRequestHandle
> r_118f7af209f.java)
>       at
> nu.localhost.tapestry.acegi.services.internal.HttpServletRequestFilterWr
> apper$1.doFilter(HttpServletRequestFilterWrapper.java:57)
>       at
> org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilt
> er(SecurityContextHolderAwareRequestFilter.java:81)
>       at
> nu.localhost.tapestry.acegi.services.internal.HttpServletRequestFilterWr
> apper.service(HttpServletRequestFilterWrapper.java:52)
>       at
> $HttpServletRequestFilter_118f7af209b.service($HttpServletRequestFilter_
> 118f7af209b.java)
>       at
> $HttpServletRequestHandler_118f7af209f.service($HttpServletRequestHandle
> r_118f7af209f.java)
>       at
> nu.localhost.tapestry.acegi.services.internal.HttpServletRequestFilterWr
> apper$1.doFilter(HttpServletRequestFilterWrapper.java:57)
>       at
> org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(Reme
> mberMeProcessingFilter.java:135)
>       at
> nu.localhost.tapestry.acegi.services.internal.HttpServletRequestFilterWr
> apper.service(HttpServletRequestFilterWrapper.java:52)
>       at
> $HttpServletRequestFilter_118f7af209a.service($HttpServletRequestFilter_
> 118f7af209a.java)
>       at
> $HttpServletRequestHandler_118f7af209f.service($HttpServletRequestHandle
> r_118f7af209f.java)
>       at
> nu.localhost.tapestry.acegi.services.internal.HttpServletRequestFilterWr
> apper$1.doFilter(HttpServletRequestFilterWrapper.java:57)
>       at
> org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessin
> gFilter.java:271)
>       at
> nu.localhost.tapestry.acegi.services.internal.HttpServletRequestFilterWr
> apper.service(HttpServletRequestFilterWrapper.java:52)
>       at
> $HttpServletRequestFilter_118f7af2099.service($HttpServletRequestFilter_
> 118f7af2099.java)
>       at
> $HttpServletRequestHandler_118f7af209f.service($HttpServletRequestHandle
> r_118f7af209f.java)
>       at
> nu.localhost.tapestry.acegi.services.internal.HttpServletRequestFilterWr
> apper$1.doFilter(HttpServletRequestFilterWrapper.java:57)
>       at
> org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(H
> ttpSessionContextIntegrationFilter.java:249)
>       at
> nu.localhost.tapestry.acegi.services.internal.HttpServletRequestFilterWr
> apper.service(HttpServletRequestFilterWrapper.java:52)
>       at
> $HttpServletRequestFilter_118f7af2098.service($HttpServletRequestFilter_
> 118f7af2098.java)
>       at
> $HttpServletRequestHandler_118f7af209f.service($HttpServletRequestHandle
> r_118f7af209f.java)
>       at
> $HttpServletRequestHandler_118f7af2097.service($HttpServletRequestHandle
> r_118f7af2097.java)
>       at
> org.apache.tapestry.TapestryFilter.doFilter(TapestryFilter.java:168)
>       at
> org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(Web
> ApplicationHandler.java:821)
>       at
> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFil
> terInternal(OpenSessionInViewFilter.java:198)
>       at
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequ
> estFilter.java:75)
>       at
> org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(Web
> ApplicationHandler.java:821)
>       at
> org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationH
> andler.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(WebApplicationCon
> text.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_118f7af
> 2115.java)
>       at
> org.acegisecurity.intercept.AbstractSecurityInterceptor.beforeInvocation
> (AbstractSecurityInterceptor.java:323)
>       at
> nu.localhost.tapestry.acegi.services.internal.StaticSecurityChecker.chec
> kBefore(StaticSecurityChecker.java:43)
>       at
> $SecurityChecker_118f7af20ce.checkBefore($SecurityChecker_118f7af20ce.ja
> va)
>       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(C
> omponentPageElementImpl.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-tp1636429
> 5p16364295.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]
> 
> The information contained in this email is strictly confidential and for
> the use of the addressee only, unless otherwise indicated. If you are not
> the intended recipient, please do not read, copy, use or disclose to
> others this message or any attachment. Please also notify the sender by
> replying to this email or by telephone (+44 (0)20 7896 0011) and then
> delete the email and any copies of it. Opinions, conclusions (etc.) that
> do not relate to the official business of this company shall be understood
> as neither given nor endorsed by it. IG Index plc is a company registered
> in England and Wales under number 01190902. VAT registration number 761
> 2978 07. Registered Office: Friars House, 157-168 Blackfriars Road, London
> SE1 8EZ. Authorised and regulated by the Financial Services Authority. FSA
> Register number 114059.
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to