面试题:常用的认证机制之session认证和token认证

一、session认证


1、session认证的过程


前端输入用户名和密码进行登录操作,后端拿到用户名和密码后,会把md5进行加密,加密之后,拿上加密后的密文到用户表中查找密文是否一致,判断用户是否存在,如果用户存在,则认证通过;认证成功后后端会生成session_id(后端会话当中的一个键,表中的一个key值),将session_id默认保存在会话表,当这条数据一旦记录完之后,会将session_key数据作为session_id放到响应头的set-cookie字段中;
浏览器接下来的操作为:将响应头中的set-cookie字段的值取出来把它放到cookie中,下一次请求接口的时候,浏览器会自动将cookie中的sessionid字段传给后端,而后端将sessionid取出来,去会话表中查找,如果一致登录成功,否则登录失败;如果sessionid时间超时,也会登录失败。

如果没有这种cookies机制,我们不管干嘛都得登录;有cookies机制,只要我们有合法的sessionid,并且sessionid没有过期就可以正常访问。

会话id(session_id)是后端django生成的

2、session认证示意图


3、session认证机制的特点:
session保存在服务端,大量的用户进行登录操作,数据会存放大量的数据;会增加服务器开销
分布式架构中,难以维持session会话同步
csrf攻击风险

二、token认证


1、token认证的过程


a、客户端使用用户名和密码请求登录
b、服务器收到请求,去验证用户名和密码
c、验证成功后,服务器会生成一个token,再把token发送给客户端
d、客户端收到token以后把它存储起来,放到会话存储或者本地存储中(浏览器关掉后,存放在会话存储中的内容被清空,本地存储会永久存放,除非手动删除本地存储内容),
e、客户端每次向服务端请求资源的时候需要带着服务端返回来的token
f、服务端收到请求后,去验证客户端请求里面带着的token,如果验证通过,就向客户端返回响应数据

2、token认证示意图


3、token认证机制的特点


token保存在客户端,不保存在数据库;不会增加服务器开销,性能更好
跨语言、跨平台
拓展性强
鉴权性能高
cookie是专门保存身份信息的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值