Spring mvc session cookie实现自动登录
设计过程
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实现自动登录的更多相关文章
- cookie实现自动登录
有很多Web程序中第一次登录后,在一定时间内(如2个小时)再次访问同一个Web程序时就无需再次登录,而是直接进入程序的主界面(仅限于本机).实现这个功能关键就是服务端要识别客户的身份.而用Cookie ...
- C#检测并安装https站点的数字证书,CefSharp和HttpWebRequest通过会话Cookie实现自动登录访问https站点
HttpUtil工具类: using System; using System.Collections.Generic; using System.IO; using System.Linq; usi ...
- spring mvc 用cookie和拦截器实现自动登录(/免登录)
Cookie/Session机制详解:http://blog.csdn.net/fangaoxin/article/details/6952954 SpringMVC记住密码功能:http://blo ...
- struts2与cookie实现自动登录和验证码验证
主要介绍struts2与cookie结合实现自动登录 struts2与cookie结合时要注意采用.action 动作的方式实现cookie的读取 struts2的jar包 链接数据库文件 db.pr ...
- Spring Mvc session拦截器实现
Spring Mvc拦截器实现session过期跳转到登录页面 配置拦截器 <mvc:interceptors> <mvc:interceptor> <mvc:mappi ...
- 使用cookie下次自动登录
登录时勾选了自动登录处理: 1.加密账号和IP,保存在cookie中,cookie('auto', $value, $time) 2.解密cookie,取出账号和上次IP,判断上次IP==当前IP.账 ...
- cookie技术自动登录
user public class User implements Serializable{ private String username; private String nick; privat ...
- 使用cookie实现自动登录
一.从登录——>主页面,进行的过程是,输入 用户名和密码,以及验证码,点击“登录”跳转到Activity.jsp login1.action(跳转到登录页面) /** 跳转到login(有积分排 ...
- SpringBoot集成Spring Security(2)——自动登录
在上一章:SpringBoot集成Spring Security(1)——入门程序中,我们实现了入门程序,本篇为该程序加上自动登录的功能. 文章目录 一.修改login.html二.两种实现方式 2. ...
随机推荐
- 编码 decode & encode
import sys # python3 中字符编码默认为 utf-8 s = '你好' print(s) # utf-8 转为 gbk (s 默认为 unicode 所以可以直接 encode 成 ...
- Ehlib 学习
似乎是为了垂直滚动条 SumList.Active := True; SumList.VirtualRecords := True; TDBGridEh 设计时 It is useful to use ...
- 洛谷P2886 [USACO07NOV]牛继电器Cow Relays
题意很简单,给一张图,把基本的求起点到终点最短路改成求经过k条边的最短路. 求最短路常用的算法是dijkstra,SPFA,还有floyd. 考虑floyd的过程: c[i][j]=min(c[i][ ...
- python之路-数据类型(方法)
Int i = 1 print(i.bit_length()) # 转化成二进制的最小位数. ''' 0000 0001 ''' Str class str(basestring): "&q ...
- C语言常见易错题集(分析及解答)(仅可用于交流,勿用于商业用途)
1.能正确表示a和b同时为正或同时为负的逻辑表达式是( D ). A.(a>=0||b>=0)&&(a<0||b<0) B.(a> ...
- 手机端扫描证件识别SDK
手机端扫描证件识别SDK 一.手机端扫描证件识别SDK应用背景 这些年,随着移动互联网的的发展,越来越多的公司都推出了自己的移动APP,这些APP多数都涉及到个人身份证信息的输入认证(即实名认证),如 ...
- CISCO 关闭4786端口解决方法
先确认交换机是否支持smart install服务 检查命令如下: switch#show vstack config | inc Role Role:Client (SmartInstall ena ...
- BUAAOO第二单元总结之电梯问题
---恢复内容开始--- Homework1 傻瓜电梯 程序架构 第一次题目非常简单,思考也非常简单,一部电梯傻瓜调度.将命令入公共的队列,电梯从公共队列中取命令即可,其中只需要使用ArrayBloc ...
- python笔记25-sys模块
import sys#sys.argv命令行参数List,第一个元素是程序本身路径# sys.exit('xxxxx')#退出程序,正常退出时exit(0)# print(sys.version) # ...
- 定义一个Map集合,key和value不规定类型,任意放入数据,用keySet()和 entrySet()两种方式遍历出Map集合的数据
package com.lanxi.demo1_1_1; import java.util.HashMap; import java.util.Iterator; import java.util.M ...