I've made some progress with this. By changing my link to go to a different page, I do see the cookie being removed.
So by going from... SHtml.link("/logout", LoginContext.logout, <span>Logout</span> ) to SHtml.link("/blank", LoginContext.logout, <span>Logout</span> ) It works: the cookie is deleted when the user clicks the logout link. The menu items are now: Menu(Loc("logout", List("logout") -> false, "Logout", Hidden, If( ()=>false, ()=>RedirectResponse("/blank")) )) :: Menu(Loc("blank", List("blank") -> false, "Blank", Hidden )) :: ...and blank is blank.html which contains <p>This page intentionally blank.</p> The reason for the RedirectResponse is to (eventually) send the user to the /index (home page)... but I send them to blank.html at the moment while I'm working through this issue. I'll go read up on RedirectResponse ... Cheers Richard On Sat, Aug 15, 2009 at 11:30 AM, Richard Dallaway<dalla...@gmail.com> wrote: > Thank you for the debugging clue (very handy function; I can see > myself using that in other situations). > > What I see when the logout link is followed is: > > List() > > When I set the cookie originally, I do see a List(HTTPCookie(...)) > > I'm running all of this on 127.0.0.1:8080. > > Thanks > Richard > > > On Sat, Aug 15, 2009 at 8:37 AM, marius d.<marius.dan...@gmail.com> wrote: >> >> Your code looks fine to me. There is notmagic withXHtml.link just that >> when you click the link on server-side your function gets called >> before the /logout page gets rendered. >> >> Can you add a function to LiftRules.onEndServicing ? >> >> LiftRules.onEndServicing.append { >> >> case (req, Full(resp)) => >> val cookies = resp.toResponse.cookies >> // trace the cookies >> >> case _ => >> } >> >> >> Br's, >> Marius >> >> On Aug 14, 8:20 pm, Richard Dallaway <dalla...@gmail.com> wrote: >>> I'm seeing some odd behaviour with a cookie I'm setting not being >>> removed. I'm unsure which phase of my code is broken or how deep my >>> misunderstandings are here... so I'm looking for some clues. >>> >>> I'm setting a "keep me logged in" cookie for users of my application. >>> That works fine using... >>> >>> val c = HTTPCookie(COOKIE_NAME, >>> encode(user)).setMaxAge(three_months_as_seconds) >>> S.addCookie(c) >>> >>> The encode(user) is, when all is said and done, returning the user PK >>> as the cookie value. >>> >>> I'm not using ProtoUser, I'm using the scheme outlined >>> inhttp://groups.google.com/group/liftweb/msg/85a8e790d5efec26 >>> >>> That is, I have... >>> >>> object LoginContext { >>> object userId extends SessionVar[Box[Long]](KeepMeLoggedIn.findUserId) >>> // etc... >>> >>> } >>> >>> ...and the findUserId function tries to decode the cookie and find a >>> matching user: >>> >>> def findUserId:Box[Long] = for { >>> cookie <- S.findCookie(COOKIE_NAME); >>> cookie_value <- cookie.value; >>> (id, salt) <- decode(cookie_value); >>> u <- User.find(By(User.id, id),By(User.salt,salt)) >>> } yield { >>> println(u) >>> id >>> } >>> >>> And that's all working for me. >>> >>> The problem comes when the user clicks the logout link, and I want to >>> remove this cookie. >>> >>> The logout link is: >>> >>> SHtml.link("/logout", LoginContext.logout, <span>Logout</span> ) >>> >>> ... and LoginContext.logout is >>> >>> KeepMeLoggedIn.removeCookie() >>> // the above is just: S.deleteCookie(COOKIE_NAME) >>> userId.remove() >>> currentUser.remove() >>> S.request.foreach(_.request.session.terminate) >>> >>> And for completeness, my /logout page is a redirect to the home page: >>> >>> Menu(Loc("logout", List("logout") -> false, "Logout", Hidden, If( >>> ()=>false, ()=>RedirectResponse("/index")) )) >>> >>> What I'm seeing is: >>> - user clicks logout >>> - logout function called, and Jetty tells me /logout took N >>> milliseconds to render >>> - then I'm seeing activity in the findUserId function, a result is >>> found, and the user is logged back in again. >>> - then Jetty tells me /index took N milliseconds to render. >>> >>> When I dig into HTTP headers, I'm not seeing the cookie value being >>> set in the response header (which I believe is required to remove it). >>> >>> I'm guessing my confusion is perhaps over how the SHtml.link magic works? >>> >>> Any suggestions of where I might poke around next? >>> >>> I'm using 1.1-SNAPSHOT (updated a few hours ago). >>> >>> Thank you >>> Richard >> >> >> > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---