yeah I realize that JSessionId is there for the session, but I want to build
functionality into a dispatcher that strips this jsessionid from the request
if a user is not logged in (logged in in my app means that a User-instance
exists in the ASM) and if the user has cookies disabled. 

The rationale is 
that I don't want search-engines to see the JSessionid, but I want to enable
users without cookies to login and track their settings using JSessionID in
the url. 
Since search-engines don't login these 2 groups are nice mutually exclusive
and so it's a clean cut when to strip the JSessionid and when not. 

Except that I'm still not sure how to do it. 
Wrapping the request and response in a handler (before Tapestry comes in
action) and stripping it like that works, but doing it almost exactly the
same in a dispather doesn't . 

That's why I think it has to do with some internal tapestry processing.
Do you have an idea where to look? 


Howard Lewis Ship wrote:
> 
> All the jsessionid functionality is provided by the servlet container,
> not by Tapestry.  And it does exactly what you are suggesting ...
> except that its not about the user being logged in, its about the user
> have a session.
> 
> On Thu, Jul 10, 2008 at 8:52 AM, Britske <[EMAIL PROTECTED]> wrote:
>>
>> partially related to a post I send a couple of days ago, but perhaps this
>> explains better what I'm trying to do.
>>
>> I'm trying to strip the jSessionId from displaying in the url if:
>> 1. user doesn't have cookies (otherwise it won't display anyway)
>> 2. user is not logged in.
>>
>> I wanted to implement this as a filter, but I have to go with a dispather
>> since to see if a user is logged in I need to have access to the ASM,
>> which
>> I can't get to in a filter.
>>
>>
>> Now somewhere in between all the HttpSevletRequest to tapestry.request
>> comversion, etc. tapestry decides to take over the JSessionId provided by
>> the HttpServletRequest. I want to intercept this call somehow and strip
>> the
>> JSessionId from the request.
>>
>> I implemented a Dispatcher (the last in the line before onActivate is
>> called) and basically wrapped (subclassed) HttpServletRequest and
>> HttpServletResponse to return null for the sessionid and have redirecturl
>> return url. My own HttpServlet get's called in the app (and returns null
>> for
>> getrequestedSessionId()) This request is added as a constructor param to
>> a
>> newly created tapestry.requestImpl which are both saved to
>> RequestGlobals. I
>> though that should do the trick
>>
>> not...
>> Apperantly somehow the jsessionid is picked up anyway although (when
>> expecting requestglobals.getHttpServletRequest.getRequstedSessionId() in
>> page.onactivate() this correctly returns null).
>>
>> Anyone?
>> Thanks.
>>
>> my code:
>> //SessionStripController
>> public final class SessionStripController implements Dispatcher {
>>        private ApplicationStateManager asm;
>>        private RequestGlobals globals;
>>
>>        public SessionStripController(ApplicationStateManager
>> asm,RequestGlobals
>> globals){
>>                this.asm = asm;
>>                this.globals = globals;
>>        }
>>
>>        public boolean dispatch(Request req, Response response) throws
>> IOException
>> {
>>                if (req.isRequestedSessionIdValid() &&
>> globals.getHTTPServletRequest().getCookies()==null)
>>                {
>>                        Session session = req.getSession(false);
>>                        if (session != null) session.invalidate();
>>
>>                        HttpServletRequestWrapper wrappednRequest = new
>> HttpServletRequestWrapperOwn(globals.getHTTPServletRequest());
>>
>>                        HttpServletResponseWrapper wrappedResponse      =
>> new
>> HttpServletResponseWrapper(globals.getHTTPServletResponse())
>>                        {
>>                                public String encodeRedirectUrl(String
>> url) { return url; }
>>                                public String encodeRedirectURL(String
>> url) { return url; }
>>                                public String encodeUrl(String url) {
>> return url; }
>>                                public String encodeURL(String url) {
>> return url; }
>>                        };
>>                       
>> globals.storeServletRequestResponse(wrappednRequest, wrappedResponse);
>>                        globals.storeRequestResponse(new
>> RequestImpl(wrappednRequest), new
>> ResponseImpl(wrappedResponse));
>>                }
>>                return false;
>>        }
>> }
>>
>>
>> //HttpServletRequestWrapperOwn
>> public class HttpServletRequestWrapperOwn extends
>> HttpServletRequestWrapper
>> {
>>
>>        public HttpServletRequestWrapperOwn(HttpServletRequest request) {
>>                super(request);
>>        }
>>
>>        public String getRequestedSessionId(){
>>                return null;
>>        }
>>
>> }
>>
>>
>>
>> --
>> View this message in context:
>> http://www.nabble.com/T5%3A-what-part-of-tapestry-adds-Jsessionid-tp18385573p18385573.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]
>>
>>
> 
> 
> 
> -- 
> Howard M. Lewis Ship
> 
> Creator Apache Tapestry and Apache HiveMind
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/T5%3A-what-part-of-tapestry-adds-Jsessionid-tp18385573p18387981.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