Login, cookie, session等概念理解

在网站或mobile开发时,最重要的模块之一就是Login登陆模块了。

对于开发而言,Login模块最常考虑的子模块就是:

1. 从数据库中获取登陆用户的信息,GetUserCredential

如userId, username, password, cookies, lastLoginTime, isKeepLogin及其他公司或身份信息。

2. 在用户输入或者从数据库中拿到username, password后,Login接口

常用接口定义及参数 Login(username, password, isKeepLogin)

进行登陆,一般的流程逻辑:

a. 删除旧的cookie和userid信息 (server就不会拿到带有完整cookie或userid的Login请求);

b. 将username, password, device time等信息发送给server,POST的请求方式。

c. server响应:server在验证完username,password以后,会传回更多的信息,最重要的就是userid和cookies,它们以后每次url请求都会被包含在http header中,是能否被server接受的关键信息. 如何登陆失败,那什么都拿不到,什么也都不记录。

d. 向数据库中增加或更新用户身份信息,username, password, userid, cookies, isKeepLogin等

3. RenewSession

在用户发送url请求时,会遇到401的信息。表明请求未被授权,及用户身份被被验证。

造成这种问题的原因有:

a. 在首次登陆时,表明用户名和密码其中之一或两者都无效,如输入有误、用户名暂时停用

b. session过期,需要重新登陆

这时可以尝试使用保存过的用户名和密码登陆一下,如果登陆成功,就再次刷新用户的身份信息,并且这种尝试方式,只能有一次。

4. Force To Web

在mobile开发时,还会遇到一种方式Force To Web,直接采用打开内置浏览器进行登陆的方式,这个时候,数据库需要保存web方式的cookie。

5. Logout

清除数据库中的userid和cookie及password,因为这些都是用户再次登陆需要输入的关键信息。

6. isLogin

判断是否已经登陆,可以判断数据库中的userid,cookie都存在。

8. 对于Login之前更多的信息,如公司、学校的选择等,无关个人的信息,需要更多的逻辑来处理login的流程。

*. 其他需要熟悉的概念

Http header域包含哪些信息:

UserAgent

Cookie

ContentType

AcceptLanguage

userAgent

各种软硬件的版本,是在http协议中,头域的组成部分,通过这个标识,用户所访问的网站可以显示不同的排版从而为用户提供更好的体验或者进行信息统计;例如用手机访问谷歌和电脑访问是不一样的,这些是谷歌根据访问者的UA来判断的。

信息如:

"platform" : os平台,如iOS

"platform_version",os的操作系统版本

"carrier_code" :移动网络运营商的代码

"carrier_name"

"device_name" : 硬件名称,如iphone6

"device_id" : 硬件id,ios可以从IdentifierForVendor获取,android可以从TelephonyManagerSecure获取。

"app_name" : app名称

"app_version"

"timezone" : 时区信息, 如"GMT+8","GMT-8"等标准信息

cookies有什么作用呢?

现在上许多网站都用新用户注册这一项,有时注册了一下,等到下次再访问该站点时,会自动识别到你,并且向你问好,是不是觉得很亲切?当然这种作用只是表面现象,更重要的是,网站可以利用cookies跟踪统计用户访问该网站的习惯,比如什么时间访问,访问了哪些页面,在每个网页的停留时间等。利用这些信息,一方面是可以为用户提供个性化的服务,另一方面,也可以作为了解所有用户行为的工具,对于网站经营策略的改进有一定参考价值。例如,你在某家航空公司站点查阅航班时刻表,该网站可能就创建了包含你旅行计划的Cookies,也可能它只记录了你在该站点上曾经访问过的Web页,在你下次访问时,网站根据你的情况对显示的内容进行调整,将你所感兴趣的内容放在前列。这是高级的Cookie应用。

目前Cookies 最广泛的是记录用户登录信息,这样下次访问时可以不需要输入自己的用户名、密码了——当然这种方便也存在用户信息泄密的问题,尤其在多个用户共用一台电脑时很容易出现这样的问题。

如cookie信息可以包括user_id,传送给server

Session ID的载体是 Cookie,那session和cookie的过期时间的区别是什么?

Session过期是服务器过期, 而Cookie过期是客户端(浏览器)来保证的, 即使你设置了Cookie过期, 这个只能保证标准浏览器到期的时候, 不会发送这个Cookie(包含着Session ID), 而如果通过构造请求, 还是可以使用这个Session ID的值.

如何设置一个30分钟过期的Session?

1. 设置Cookie过期时间30分钟, 并设置Session的lifetime也为30分钟.

2. 自己为每一个Session值增加Time stamp.

3. 每次访问之前, 判断时间戳.

实际使用场景的话, 比如30分钟就过期的优惠劵

时间: 2024-08-02 14:52:09

Login, cookie, session等概念理解的相关文章

cookie,Session机制的本质,跨应用程序的session共享

目录:一.术语session二.HTTP协议与状态保持三.理解cookie机制四.理解session机制五.理解javax.servlet.http.HttpSession六.HttpSession常见问题七.跨应用程序的session共享八.总结 一.术语session在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与session在某些语境下的含义是相同的.session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动

node(4)express 框架 EJS模板,cookie, session的学习

一.EJS 概述:前端咱们使用过的一个模板套路,是underscore的套路.接下来EJS它属于后台工程师人的模板. https://www.npmjs.com/package/ejs 官网地址 特点: Control flow with <% %>             流程控制语句用的是<% %>   :例如if   for循环等等 Escaped output with <%= %> (escape function configurable)     如果有赋

Cookie Session 分页

cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况. 一句有意思的话来描述就是人生只如初见,对服务器来说,每次的请求都是全新的. 状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被保留.会话中产生的数据又是我们需要保存的,也就是说要"保持状态".因此cookie就是在这样一个场景

python Cookie Session 相关用法

Cookie一.前言1.http协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响 应情况直接影响,也不会直接影响后面的请求响应情况.2.cookie产生背景; 状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被保留.会话中产生的数据又是 我们需要保存的,也就是说要"保持状态".3.什么是cookie? Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组

关于cookie,session和token

一.理解HTTP“无状态”的含义 我们知道,HTTP是一种无状态的协议,客户端与服务器建立连接并传输数据,数据传输完成后,连接就会关闭. 举个栗子,如果在无状态情况下访问淘宝,会出现以下场景: 1)打开淘宝的url,在这一步输入用户名和密码: 2)在首页选择一样商品,点击进去,又提示需要重新登录.因为HTTP是无状态的,虽然在第1步中已经输入了用户名和密码,但我们的客户端不会记住上一步输入的用户名和密码,而服务器也不会记住已登录的状态: 经过上述例子,我们可以把“无状态”理解为:不会对本次会话设

cookie&amp;session及自定义分页

cookie&session和自定义分页 cookie由何而来? 由于HTTP协议是无状态的,即每次请求都是独立的,如:人生只如初见. 状态可以理解为客户端和服务器在某次会话中产生的数据,无状态的就是这些数据不会被保留.但在实际中,会话中产生的数据又是我们需要保存的.因此Cookie就是在这样一个场景下诞生. 什么是Cookie? Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用信息. Cookie的

实现HTTPS系列第四弹之【TLS ,SSL等概念理解】

博文说明[前言]: 本文将通过个人口吻介绍TLS ,SSL,PKI等相关知识,在目前时间点[2017年5月21号]下,所掌握的技术水平有限,可能会存在不少知识理解不够深入或全面,望大家指出问题共同交流,在后续工作及学习中如发现本文内容与实际情况有所偏差,将会完善该博文内容. 1.第一弹:实现HTTPS系列第一弹之[http,https,www,web等概念简介] 博文链接:http://watchmen.blog.51cto.com/6091957/1922919 2.第二弹:实现HTTPS系列

cookie,session,token的定义及区别

参考了很多文章总结的. 1.cookie(储存在用户本地终端上的数据) 服务器生成,发送给浏览器,浏览器保存,下次请求同一网站再发送给服务器. 2.session(会话) a.代表服务器与浏览器的一次会话过程,这个过程是连续的,也可以时断时续的. b.cookie中存放着一个sessionID.请求时会发送这个ID. c.session因为请求(request对象)而产生. d.session是一个容器,可以存放会话过程中的任何对象. e.session的创建和使用总在服务端,而浏览器从来都没得

Django9 Cookie&amp;Session

Cookie 获取Cookie request.COOKIES["key"] request.get_signed_cookie(key, default=RAISE_ERROR, salt="", max_age=None) # 参数 # default:默认值 # salt:加密盐 # max_age:后台控制过期时间 设置Cookie rep = HttpResponse(...) 或 rep = render(request, ...) rep.set_co