设计过程

1. user表存储用户名密码等信息,login表存放用户登陆状态的表

user表中存储username,pwd,等信息

login表存username,series(UUID),token(过期时间,用户名,密码 加密后数据),  validTime 过期时间。

2.调用用户登陆接口并且用户名密码验证成功之后,

a.计算登陆最大过期时间

b.生成token,(我是用过期时间+用户名+密码+盐)

c.生成cookievalue(用户名+UUID 并加密,格式自定义,方便取用户名和UUID就行,我是username+"_"+UUID)

d.查询登陆记录表,是否有登陆过。没有登陆,则插入登陆记录,有登陆记录,则更新series,token,过期时间。

f.添加cookie 到response cookiename(自己设定)  cookievalue 即c

g.登陆成功后,可以把用户相关信息存入session,防止出现禁用cookie设置,这样可以在浏览器没有关闭的时候,使用session访问。

3.定义登陆拦截器,拦截除了登陆之外的所有接口(可以按照个人需求去拦截)

a.先找session中用户,如果能找到,则直接访问,如果找不到,取cookie->b

b.根据自定义的cookiename取到cookievalue后,解密后,字符串分割得到用户名和UUID

c.使用用户名和UUID查到登陆记录,判断当前时间是否在过期时间之前,如果过期,删除cookie后则重新登陆,没过期的->d

d.根据用户名查到用户信息,取到用户名密码,加上登陆记录中的过期时间,计算一把新token(因为修改密码后,需要重新登陆),新token与登陆记录中的token进行比较,不同则删除cookie后重新登陆,相同->f

f.token相同基本登陆验证已经完成了,再去数据库更新登陆记录表,把series,token,过期时间更新

j.把用户信息写进session中即可。

结束。

Spring mvc session cookie实现自动登录的更多相关文章

  1. cookie实现自动登录

    有很多Web程序中第一次登录后,在一定时间内(如2个小时)再次访问同一个Web程序时就无需再次登录,而是直接进入程序的主界面(仅限于本机).实现这个功能关键就是服务端要识别客户的身份.而用Cookie ...

  2. C#检测并安装https站点的数字证书,CefSharp和HttpWebRequest通过会话Cookie实现自动登录访问https站点

    HttpUtil工具类: using System; using System.Collections.Generic; using System.IO; using System.Linq; usi ...

  3. spring mvc 用cookie和拦截器实现自动登录(/免登录)

    Cookie/Session机制详解:http://blog.csdn.net/fangaoxin/article/details/6952954 SpringMVC记住密码功能:http://blo ...

  4. struts2与cookie实现自动登录和验证码验证

    主要介绍struts2与cookie结合实现自动登录 struts2与cookie结合时要注意采用.action 动作的方式实现cookie的读取 struts2的jar包 链接数据库文件 db.pr ...

  5. Spring Mvc session拦截器实现

    Spring Mvc拦截器实现session过期跳转到登录页面 配置拦截器 <mvc:interceptors> <mvc:interceptor> <mvc:mappi ...

  6. 使用cookie下次自动登录

    登录时勾选了自动登录处理: 1.加密账号和IP,保存在cookie中,cookie('auto', $value, $time) 2.解密cookie,取出账号和上次IP,判断上次IP==当前IP.账 ...

  7. cookie技术自动登录

    user public class User implements Serializable{ private String username; private String nick; privat ...

  8. 使用cookie实现自动登录

    一.从登录——>主页面,进行的过程是,输入 用户名和密码,以及验证码,点击“登录”跳转到Activity.jsp login1.action(跳转到登录页面) /** 跳转到login(有积分排 ...

  9. SpringBoot集成Spring Security(2)——自动登录

    在上一章:SpringBoot集成Spring Security(1)——入门程序中,我们实现了入门程序,本篇为该程序加上自动登录的功能. 文章目录 一.修改login.html二.两种实现方式 2. ...

随机推荐

  1. "No entity found for query"(转)

    很久以前一直用EntityManager下getResultList()查询数据,即便一个数据亦是如此,所以要频繁的List.get(0).新接口getSingleResult()出现了,然后就开始频 ...

  2. 三、Linux的目录结构:

    root管理员的home目录root 其他用户的home目录home目录中

  3. typescript 关于class属性类型定义被属性默认值覆盖的问题及解决方式

    问题来源于 React.component的第二个参数的类型定义问题,我构建了以下简化demo,方便描述问题: class P<STATE> { public state: STATE; ...

  4. react native第一天--------KnightRider

    今天是2017年6月8,是我的项目react native-CRM(用户关系管理)的第一天,一早就配置了一上午Mac的环境,然后运行项目,在react-native init project的时候一直 ...

  5. StringBuffer&StringBuilder

    对字符串修改时,用到StringBuffer&StringBuilder,能够多次修改对象并且不产生新的未使用对象 StringBuilder线程不安全(不能同步访问),速度有优势,多数情况下 ...

  6. Vue语法学习第一课——插值

    学习关于Vue的插值语法 ① 文本值 : "Mustache"语法,即双大括号 <span>Message:{{msg}}</span> 注:双大括号中的m ...

  7. linux中sed命令批量修改

    sed命令下批量替换文件内容  格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径` 文件名 -i 表示inplace edit,就地修改文件 ...

  8. Python第六章(北理国家精品课 嵩天等)

    一 1.集合类型定义及其操作: 集合用{}表示,元素用逗号分隔,无序,唯一 集合操作符: |:并 -:减 &:交 ^ :补 <= <:判断子集关系 >= >:判断包含关 ...

  9. tcl实现批量压缩文件夹

    tcl脚本本身对字符串的处理比较简单,所以想着用这个也实现下: proc main {} { puts "请输入路径:" set strpath "E:\\123&quo ...

  10. TCP学习总结(三)

    TCP的流量控制 1.利用滑动窗口实现流量控制 所谓流量控制,就是让发送方的发送速率不要太快,要让接收方来得及接收.利用下图来说明如何利用滑动窗口机制进行流量控制: 一开始(connect后),B告诉 ...