登录成功后如何利用cookie保持登录状态
Cookie是一种服务器发送给浏览器的一组数据,用于浏览器跟踪用户,并访问服务器时保持登录状态等功能。
通常用户登录的时候,服务器根据用户名和密码在服务器数据库中校验该用户是否正确,校验正确后则可以根据用户ID和时间戳等属性加密生成一个Token,并返回给浏览器。
生成一个ticket的例子:
WebUtils.saveCookie(response, “ticket”, webTicket, -1, "/", null);
这样浏览器就会得到一个cookie
只要这个访问回话没有关闭,所有访问服务器的请求都会带上这个cookie。
服务器通过拦截器来校验用户的登录状态
//伪代码
public class PassPortIntercepter extends HandlerInterceptorAdapter {
public boolean preHandler(HttpServletRequest request, HttpServletResponse response) {
//拦截请求
String ticket = request.getParameter("ticket");
//根据ticke解密用户的id
long id = SessionUtil.build(ticket).getUserId();
//再从数据库中访问是否存在这个用户
UserInfo user = userInfoService.getUserBy(id);
//如果不存在user,讲该请求拦截,并跳回登录页
if(user == null) {
return false;
}
return super.preHandle(request, response, handler);
}
}
这种情况下,cookie如果被人窃取,则会有泄露信息的危险。
- 通过设置httpOnly属性,这样cookie只在http中传输,而不会被脚本窃取,但是网络拦截http请求还是会得到cookie。
- 在cookie中加入校验信息,这个校验信息与用户的使用环境相关,比如ip地址,计算机的物理地址等,在服务器端对校验的时候,如果校验值发生了变化,则要求重新登录。
登录成功后如何利用cookie保持登录状态的更多相关文章
- httpclient 怎么带上登录成功后返回的cookie值访问下一页面
我是只很菜很菜的小鸟.刚上班,有这个一个需求.要我抓取别的网站的数据. 我根据用户密码登录一个网站成功后,生成一个cookie值.我已经获取到了.然后要带上这个cookie值进行下一页面的访问 ...
- httpclient 登录成功后返回的cookie值访问下一页面
HttpClient4.x可以自带维持会话功能,只要使用同一个HttpClient且未关闭连接,则可以使用相同会话来访问其他要求登录验证的服务(见TestLogin()方法中的"执行get请 ...
- 【转】【可用】Android 登录判断器,登录成功后帮你准确跳转到目标activity
我们在使用应用时肯定遇到过这样的情景,打开应用,并不是需要我们登录,你可以浏览应用中的大部分页面,但是当你想看某个详情页的时候,点击后突然跳转到了登录页面,好,我们输入账号密码,点击登录,登录成功,跳 ...
- 使用Shiro登录成功后,跳转到之前访问的页面实现
转:http://blog.csdn.net/lhacker/article/details/20450855 很多时候,我们需要做到,当用户登录成功后,跳转回登录前的页面.如果用户是点击" ...
- 在某网站的登录页面登录时如果选择“记住用户名”,登录成功后会跳转到一个中间层(页面代码将登录的用户名和密码存在cookie),中间页面中存在一个超链接,单击超链接可以链接到第三个页面查看信息。若选择“
Response实现登录并记录用户名和密码信息 在某网站的登录页面登录时如果选择"记住用户名",登录成功后会跳转到一个中间层(页面代码将登录的用户名和密码存在cookie),中间页 ...
- Python3之利用Cookie模拟登录
Python3之利用Cookie模拟登录 利用Cookie模拟登录步骤: 1. 在浏览器输入http://demo.bxcker.com,输入用户名和密码登录. 2.登录成功点" ...
- Java Web Application使Session永不失效(利用cookie隐藏登录)
在做 Web Application 时,因为 Web Project 有 session 自动失效的问题,所以如何让用户登录一次系统就能长时间运行三个月,就是个问题. 后来,看到 session 失 ...
- [原]基于CAS实现单点登录(SSO):登录成功后,cas client如何返回更多用户信息
从cas server登录成功后,默认只能从casclient得到用户名.但程序中也可能遇到需要得到更多如姓名,手机号,email等更多用户信息的情况. cas client拿到用户名后再到数据库中查 ...
- IdentityServer4 登录成功后,跳转到原来页面
IdentityServer4 登录成功后,默认会跳转到Config.Client配置的RedirectUris地址http://localhost:5003/callback.html,用于获取 T ...
随机推荐
- 爬虫中GET方法应用基本模型
根据get方法,更改界面url从而获取信息 GET请求URL附带查询参数 POST请求保存在form表单中 分析百度贴吧url特点: 分析url https://tieba.baidu.com/f是贴 ...
- 校内模拟赛 : Rima —— 字典树+树形DP
首先说一下,对一个刚学Trie树的蒟蒻来说(就是我),这道题是一道好题.Trie树比较简单,所以就不详细写了. Rima 内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传 ...
- LinkedHashSet -有序,不重合集合,但仍不可索引,结合for循环取元素,数据多可能效率低
package cn.learn.collection.Set; import java.util.HashSet; import java.util.Iterator; import java.ut ...
- C# InterLock保证数据一致性
; i < ; i++) { c.Increment(); c.Decrement(); ...
- python 模块和包深度学习理解
python 模块和包 简单说相当于命名空间 1,python 模块 python模块就是一个文件,里面有函数,变量等 import 模块 模块.方法 from 模块 import fu ...
- BZOJ 5450 轰炸 (强连通缩点+DAG最长路)
<题目链接> 题目大意: 有n座城市,城市之间建立了m条有向的地下通道.你需要发起若干轮轰炸,每轮可以轰炸任意多个城市.但每次轰炸的城市中,不能存在两个不同的城市i,j满足可以通过地道从城 ...
- SpringCloud-Eureka-Provider&Consumer
Eureka-Provider 服务的提供者 新建一个服务提供者项目 1.导入pom文件 <properties> <java.version>1.8</java.ver ...
- mysql数据库操作指令汇总
1.mysql -u root -p 登录数据库 2.表结构相同两表数据对拷 insert into A select * from B(插入全部字段数据) insert into A(字段1.字 ...
- go中字符串类型string的用法
示例 // 字符串类型string的用法 package main import ( "fmt" "unsafe" ) func main() { // 字符串 ...
- ES6——函数-参数
函数的参数: 1.参数扩展/数组展开 1)收集(剩余的)参数 function show(a,b,...args){} // 三点运算符 *Rest ...