记录一下自己写的网站保存用户登录信息和在网站上操作保持是登录状态的方案

记录一下自己写的保存用户登录信息和在网站上操作保持是登录状态的方案

方案

cookies里面保存三个参数,1账号(account),2密码(password),3是否自动登录(isRememberLogin),个人设置了cookie时限为7天,自动登录变量isRememberLogin只有在登录成功后才能设为true。
在每次用户输完账号,密码 和 选择是否7天内自动登录这三个信息后:

  • 登录成功且选择了自动登录:

把三个信息保存在session和cookie上,在session上添加一个User的用户对象,方便后续对用户的其他数据访问;

  • 登录成功但没选择自动登录:

把三个信息保存在session,把账号和是否自动登录保存在cookie,把密码设为空字符保存在cookie(不要保存密码),在session上添加一个User的用户对象,方便后续对用户的其他数据访问;

  • 登录失败:

把三个信息保存在session,把账号和是否自动登录保存在cookie,把密码设为空字符保存在cookie(不要保存密码)。
session.getAttribute(“user”)不为空作为一个用户是否为登录状态的一个凭证。

操作

一 是否为登录状态:
以后在网站的任何一个地方操作,先判断session是否保存了User,如果有则保持登录。如果没有(可能是session过期或者关闭了浏览器),则再判断cookies上的自动登录是否为true,如果是true(此时cookies上的账号密码必为正确),则再后台根据cookies上的账号密码通过DAO数据层获得一个User对象并保存在session上。这就保证了只要用户选择了自动登录,且账号密码正确,使得只要 isRememberLogin为true,则可以保证用户在cookie过期前都可以在网站上保持登录状态。如果为false,则用户可能未尝试过登陆,或者登陆失败,还有一个可能性是登陆成功但不选择自动登录,后来session过期了,这样,用户只能在由session的期限决定你是否保持登陆状态了。
二 退出登陆:
1,后台通过session.settAttribute(“user”,null )把user对象销毁
2,把cookies的是否自动登录(isRememberLogin)参数设为false

优点

session+cookie这样的逻辑方式的好处是,当网站的任何一个地方有账号密码的输入框,都可以通过先访问session的方式,session没有就访问cookies取得或正确(成功登陆了但是没有选择自动登录),或错误(上次输入错误的残留信息)的数据,达到一个自动填充的人性化效果。
场景1:登录失败返回后输入框后,原来输入的账号密码还在,可以用于修改。
场景2:注册成功弹出登录,刚才注册的账号自动填充到输入框。

猜你喜欢

转载自blog.csdn.net/qq_42862882/article/details/81360043