[Seaside] "Remember me" in Seaside
Sven Van Caekenberghe
sven at stfx.eu
Tue Mar 11 19:27:36 UTC 2014
What I do (and the part that I described in the message) was to remember the *username*, **not** the password, as a convenience for the user to log in faster (something that most browsers can do too, with the password even). I think that is always safe.
The other functionality (maybe that is what your were asking for) is to keep the user really logged in for a longer time (say days or weeks) even when the session expires.
That I have not yet done with the (mobile) Seaside app that I am currently working on, but I plan to do it (although it will be hard(er) in Seaside because explicit/annotated URLs are needed I think).
I have done it in another mobile web app, and it is indeed quite tricky to do. What I did, if I remember correctly, was to generate a hard to guess token that is the value of the cookie. These tokens are then kept in a table on the server where the critical data to restart the session, like username/password is stored.
Indeed, someone stealing the cookie in transit can then login, but the same is true for a regular login using username/password. The only modern solution is to always use HTTPS.
Another thing that I tried was 'user agent finger printing': remembering some (header) properties of the user agent and then enforce them, but this is hard to do reliably.
On 11 Mar 2014, at 20:03, Esteban A. Maringolo <emaringolo at gmail.com> wrote:
> But what if I spoof the cookie with a particular username?
>
> There should be a server side session whitelist, and a shared token.
> Shouldn't it?
>
> Regards!
> Esteban A. Maringolo
>
>
> 2014-03-11 8:10 GMT-03:00 Sven Van Caekenberghe <sven at stfx.eu>:
>> I do it with my own cookie, very easy to do:
>>
>> "before showing the username"
>>
>> (self requestContext request cookieAt: self loginUsernameCookieKey)
>> ifNotNil: [ :cookie | username := cookie value ]
>>
>> "after a successful login"
>>
>> self requestContext response addCookie: self loginUsernameCookie.
>>
>> where
>>
>> loginUsernameCookie
>> ^ self requestContext newCookie
>> key: self loginUsernameCookieKey;
>> value: self username;
>> expireIn: 1 year;
>> yourself
>>
>> HTH,
>>
>> Sven
>>
>> On 11 Mar 2014, at 09:39, Torsten Bergmann <astares at gmx.de> wrote:
>>
>>> Any code to share for a "remember me" functionality on logins?
>>> Is there a common pattern on how to do it?
>>>
>>> Thx
>>> T.
>>> _______________________________________________
>>> seaside mailing list
>>> seaside at lists.squeakfoundation.org
>>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>>
>> _______________________________________________
>> seaside mailing list
>> seaside at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
More information about the seaside
mailing list