You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by "Poggenpohl, Daniel" <Da...@isst.fraunhofer.de> on 2015/07/29 13:23:53 UTC

Send Redirect after Login

Hello,

I'm using the Layout component for authentication purposes. The general auth process is happening outside of the application via SSO, but all my pages have the Layout component.
Every time I request a page, The Layout component looks if a session user has been created, and if not, creates the user using a service and stores him in the session.
Now, at the end of the creation process, back in the Layout component, I want to redirect based on the roles a user has.
So I decide which page to redirect to based on the role, and do the following:

response and pageRenderLinkSource are both injected in the component.

response.sendRedirect(pageRenderLinkSource.createPageRenderLink(getPageForRole()));

But when redirecting, my Tomcat logs an exception:

java.lang.NullPointerException
                at org.apache.tapestry5.internal.services.assets.CompressionAnalyzerImpl.isCompressable(CompressionAnalyzerImpl.java:34)
                at $CompressionAnalyzer_aae9007a21a5.isCompressable(Unknown Source)
                at org.apache.tapestry5.internal.services.ResponseCompressionAnalyzerImpl.isCompressable(ResponseCompressionAnalyzerImpl.java:78)
                at $ResponseCompressionAnalyzer_aae9007a219d.isCompressable(Unknown Source)
                at org.apache.tapestry5.internal.gzip.BufferedGZipOutputStream.openResponseOutputStream(BufferedGZipOutputStream.java:77)
                at org.apache.tapestry5.internal.gzip.BufferedGZipOutputStream.checkForCutover(BufferedGZipOutputStream.java:70)
                at org.apache.tapestry5.internal.gzip.BufferedGZipOutputStream.write(BufferedGZipOutputStream.java:116)
                at sun.nio.cs.StreamEncoder.writeBytes(Unknown Source)
                at sun.nio.cs.StreamEncoder.implClose(Unknown Source)
                at sun.nio.cs.StreamEncoder.close(Unknown Source)
                at java.io.OutputStreamWriter.close(Unknown Source)
                at java.io.BufferedWriter.close(Unknown Source)
                at java.io.PrintWriter.close(Unknown Source)
                at org.apache.tapestry5.internal.services.PageResponseRendererImpl.renderPageResponse(PageResponseRendererImpl.java:85)
                at $PageResponseRenderer_aae9007a2226.renderPageResponse(Unknown Source)
                at org.apache.tapestry5.internal.services.DefaultRequestExceptionHandler.handleRequestException(DefaultRequestExceptionHandler.java:85)
                at $RequestExceptionHandler_aae9007a21a9.handleRequestException(Unknown Source)
                at org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:42)
                at $RequestHandler_aae9007a21ac.service(Unknown Source)
                at org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:902)
                at $RequestHandler_aae9007a21ac.service(Unknown Source)
                at org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:892)
                at $RequestHandler_aae9007a21ac.service(Unknown Source)
                at org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:90)
                at $RequestHandler_aae9007a21ac.service(Unknown Source)
                at $RequestHandler_aae9007a21a0.service(Unknown Source)
                at org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:253)
                at org.apache.tapestry5.upload.internal.services.MultipartServletRequestFilter.service(MultipartServletRequestFilter.java:44)
                at $HttpServletRequestHandler_aae9007a21a2.service(Unknown Source)
                at org.got5.tapestry5.jquery.services.AjaxUploadServletRequestFilter.service(AjaxUploadServletRequestFilter.java:27)
                at $HttpServletRequestHandler_aae9007a21a2.service(Unknown Source)
                at org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
                at $HttpServletRequestHandler_aae9007a21a2.service(Unknown Source)
                at org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
                at $HttpServletRequestFilter_aae9007a219c.service(Unknown Source)
                at $HttpServletRequestHandler_aae9007a21a2.service(Unknown Source)
                at org.apache.tapestry5.services.TapestryModule$1.service(TapestryModule.java:852)
                at $HttpServletRequestHandler_aae9007a21a2.service(Unknown Source)
                at $HttpServletRequestHandler_aae9007a219b.service(Unknown Source)
                at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:171)
                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
                at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
                at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
                at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:611)
                at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
                at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
                at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
                at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
                at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
                at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
                at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
                at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
                at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
                at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
                at java.lang.Thread.run(Unknown Source)

What is the problem here? Can't I send a redirect from a component?

Or is there a better way to do this? Something that intercepts all requests, creates the session user and redirects if necessary?

Regards,
Daniel P.

Re: Send Redirect after Login

Posted by Thiago H de Paula Figueiredo <th...@gmail.com>.
On Wed, 29 Jul 2015 08:23:53 -0300, Poggenpohl, Daniel  
<Da...@isst.fraunhofer.de> wrote:

> Hello,

Hi!

> response and pageRenderLinkSource are both injected in the component.
> response.sendRedirect(pageRenderLinkSource.createPageRenderLink(getPageForRole()));

Never use response.sendRedirect() in a page, component or mixin. Just  
return the URL you want to redirect to in your event handler event:  
java.net.URL or page instance injected using @InjectPage or a logical page  
name as a String. This works in pages, components and mixins. More  
information on https://tapestry.apache.org/page-navigation.html.

-- 
Thiago H. de Paula Figueiredo
Tapestry, Java and Hibernate consultant and developer
http://machina.com.br

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Send Redirect after Login

Posted by Geoff Callender <ge...@gmail.com>.
These will help:

	T5.4: http://jumpstart.doublenegative.com.au/jumpstart7/examples/infrastructure/protectingpages <http://jumpstart.doublenegative.com.au/jumpstart7/examples/infrastructure/protectingpages>
	T5.3: http://jumpstart.doublenegative.com.au/jumpstart/examples/infrastructure/protectingpages <http://jumpstart.doublenegative.com.au/jumpstart/examples/infrastructure/protectingpages>

Geoff

> On 29 Jul 2015, at 9:23 pm, Poggenpohl, Daniel <Da...@isst.fraunhofer.de> wrote:
> 
> Hello,
> 
> I'm using the Layout component for authentication purposes. The general auth process is happening outside of the application via SSO, but all my pages have the Layout component.
> Every time I request a page, The Layout component looks if a session user has been created, and if not, creates the user using a service and stores him in the session.
> Now, at the end of the creation process, back in the Layout component, I want to redirect based on the roles a user has.
> So I decide which page to redirect to based on the role, and do the following:
> 
> response and pageRenderLinkSource are both injected in the component.
> 
> response.sendRedirect(pageRenderLinkSource.createPageRenderLink(getPageForRole()));
> 
> But when redirecting, my Tomcat logs an exception:
> 
> java.lang.NullPointerException
>                at org.apache.tapestry5.internal.services.assets.CompressionAnalyzerImpl.isCompressable(CompressionAnalyzerImpl.java:34)
>                at $CompressionAnalyzer_aae9007a21a5.isCompressable(Unknown Source)
>                at org.apache.tapestry5.internal.services.ResponseCompressionAnalyzerImpl.isCompressable(ResponseCompressionAnalyzerImpl.java:78)
>                at $ResponseCompressionAnalyzer_aae9007a219d.isCompressable(Unknown Source)
>                at org.apache.tapestry5.internal.gzip.BufferedGZipOutputStream.openResponseOutputStream(BufferedGZipOutputStream.java:77)
>                at org.apache.tapestry5.internal.gzip.BufferedGZipOutputStream.checkForCutover(BufferedGZipOutputStream.java:70)
>                at org.apache.tapestry5.internal.gzip.BufferedGZipOutputStream.write(BufferedGZipOutputStream.java:116)
>                at sun.nio.cs.StreamEncoder.writeBytes(Unknown Source)
>                at sun.nio.cs.StreamEncoder.implClose(Unknown Source)
>                at sun.nio.cs.StreamEncoder.close(Unknown Source)
>                at java.io.OutputStreamWriter.close(Unknown Source)
>                at java.io.BufferedWriter.close(Unknown Source)
>                at java.io.PrintWriter.close(Unknown Source)
>                at org.apache.tapestry5.internal.services.PageResponseRendererImpl.renderPageResponse(PageResponseRendererImpl.java:85)
>                at $PageResponseRenderer_aae9007a2226.renderPageResponse(Unknown Source)
>                at org.apache.tapestry5.internal.services.DefaultRequestExceptionHandler.handleRequestException(DefaultRequestExceptionHandler.java:85)
>                at $RequestExceptionHandler_aae9007a21a9.handleRequestException(Unknown Source)
>                at org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:42)
>                at $RequestHandler_aae9007a21ac.service(Unknown Source)
>                at org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:902)
>                at $RequestHandler_aae9007a21ac.service(Unknown Source)
>                at org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:892)
>                at $RequestHandler_aae9007a21ac.service(Unknown Source)
>                at org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:90)
>                at $RequestHandler_aae9007a21ac.service(Unknown Source)
>                at $RequestHandler_aae9007a21a0.service(Unknown Source)
>                at org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:253)
>                at org.apache.tapestry5.upload.internal.services.MultipartServletRequestFilter.service(MultipartServletRequestFilter.java:44)
>                at $HttpServletRequestHandler_aae9007a21a2.service(Unknown Source)
>                at org.got5.tapestry5.jquery.services.AjaxUploadServletRequestFilter.service(AjaxUploadServletRequestFilter.java:27)
>                at $HttpServletRequestHandler_aae9007a21a2.service(Unknown Source)
>                at org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
>                at $HttpServletRequestHandler_aae9007a21a2.service(Unknown Source)
>                at org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
>                at $HttpServletRequestFilter_aae9007a219c.service(Unknown Source)
>                at $HttpServletRequestHandler_aae9007a21a2.service(Unknown Source)
>                at org.apache.tapestry5.services.TapestryModule$1.service(TapestryModule.java:852)
>                at $HttpServletRequestHandler_aae9007a21a2.service(Unknown Source)
>                at $HttpServletRequestHandler_aae9007a219b.service(Unknown Source)
>                at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:171)
>                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>                at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
>                at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
>                at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:611)
>                at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
>                at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
>                at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
>                at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>                at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
>                at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
>                at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
>                at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
>                at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
>                at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
>                at java.lang.Thread.run(Unknown Source)
> 
> What is the problem here? Can't I send a redirect from a component?
> 
> Or is there a better way to do this? Something that intercepts all requests, creates the session user and redirects if necessary?
> 
> Regards,
> Daniel P.