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 in
http://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
-~----------~----~----~----~------~----~------~--~---

Reply via email to