本文主要是介绍鉴权Cookies、授权session、token,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
2 鉴权、授权
区别:一个存在浏览器,一个存在服务器,session存到服务端当中
问1:http协议是一个典型的无状态协议,无记忆,那第一次登录下次是不是还要登录一次?
ANS:不需要
因为Cookies 和session作用:是让浏览器变得有状态,记住用户是谁,从而追踪用户
问2:浏览器登录了某些网站(优酷视频),下次访问为什么不要登录?
ANS:授权:相当于给一个通行证
鉴权:鉴定是否有权限访问(判断有没有通行证)
2.1 Cookies 和session
流程:
用户发送登录请求(login页面,user=xiaoyi password=123456),一般会加密,校验通过,服务器用如字典存储所有登陆过的账户 user = ["xiaoyi" ,"xiaoer"],登录的账户存储起来就是session
响应信息中会有特殊这段set-cookie:sessionid = ‘xiaoyi’:放到响应头信息中,不一定为sessionid可以自定义,表示是谁发送给我,我把谁存储起来了,再把用户返回给你,会存到浏览器cookie,sessionid = ‘xiaoyi’: sessionid会和域名绑定一起
cookie不一定和session绑定
Cookie
Cookie 是在 HTTP 协议下,服务器或脚本可以维护用户信息的一种方式。Cookie 是由Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息。无论何时用户访问到服务器,都会带上该服务器的cookie信息。
一般 Cookie 都是有效期的, Cookie 只在浏览器上保存一段规定的时间,一旦超过规定的时间,该 Cookie 就会被系统清除
Session
Session将数据存储在服务器中,服务器会为每一个用户创建一条session,用户访问服务器的时候需要拿着sessionid去表明自己的身份。
Session的实现是基于Cookie,Session需要借助于Cookie来存储sessionlD。
2.2 token
2.2.1什么是token?
token是“令牌”、“门票”,是服务端生成的一串字符串,作为客户端进行请求的一个标识,凭证
这里有一份接口文档:
http://www.baidu.com/docs/访问其中一个接口:
GET http://www.baidu.com/interfaces/
看不到里面的数据。会出现错误信息,缺少用户信息。没有权限
带上 JWT token 就可以得到里面的数据。
{
"token":
"ey10exAi0i]KV1QiLcIhbGci0iJIUzIINi19.eyJ1c2VyX27kIj0xLCJ1C2VybmFtZSI6ImX7bW9UMSISImV4CCI6MTU5MDYONzYxMCwizw1hawwioiisZW1vbjEwMEBxcs5jb20ifQ.GTf7QfYx6swx63E6-TIrh3AIVvDWW8cKmFwhlPilshAk".}
"user_id":1,
"username": "lemon1"
postman登录之后再次访问网址,不会主动登录,其他接口需要加入token
token的数据包含许多信息:你是谁,包含密码,token失效时间,加密方式等等
2.2.2 token和session的区别
cookie:再次请求后端会主动带上cookie,自动完成校验操作,需要去服务器查询,cookie是和域名绑定的关系,那该cookie去访问其他网址,是不能的
tooken:访问接口,基于用户名生成token一般不会存储到其本地(服务器),第二次访问时需要手动的传入token,其不用本地存储不需要校验,这样服务器不需要消耗存储资源和查询资源,通过解密算法进行解密用户信息就可以直接拿到,消耗的是计算资源 ,速度会快些,当服务器有多个域名,带上token是可以访问其他的域名(如公众号、小程序)
这篇关于鉴权Cookies、授权session、token的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!