博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2.基于token || session的登陆验证机机制
阅读量:3956 次
发布时间:2019-05-24

本文共 1003 字,大约阅读时间需要 3 分钟。

1.用户认证

http是无状态协议,不保存用户状态

1)session认证

2)token认证

 

 

2.基于session的用户认证

(1)过程

1)用户名密码校验:client向serve发送 验证码,accout, password;并且进行验证

2)session存储数据:服务器验证通过后,在session(当前对话)中保存相关数据如用户昵称,登陆时间等。

3)服务器生成session ID:服务器随机生成唯一的session-id返回给用户,写入用户的cookie中

4)用户传回session ID:用户随后的每一次请求,都通过cookie将session-id传回服务器

5)服务器接收session ID: 找到前期保存用户相关的数据

 

(2)缺点

1)开销大:高并发情况下服务器开销大,每一个请求都需要开辟session,内存开销不断增加

2)可扩展性差:session存在与于服务器中,session中的关键信息会限制服务器的扩展和负载均衡,并且不支持跨域,对移动端支持不友好

3)安全性低:cookie机制容易遭受CSRF(跨站请求伪造)

 

 

3.基于token的用户认证

(1)过程

1)用户名密码校验:client向serve发送 验证码,accout, password;使用md5加密后进行验证

2)token生成:服务器端生成一个 token,将token 存放在 redis数据库中,再将这个 token 值返回给客户端。

3) token 存储:客户端将 token 存储在 local storage 或 session storage中 (小程序可以存放在 app.global )

4)用户有新的请求时,从storage中携带token发送到服务端进行验证

5)服务端验证token并且返回数据

ps:vue的axios中

4)将token设置为请求头;以后的请求中会自动添加该请求头

       5)路由守卫:使用router-guide做权限校验,判断当前页面是否需要进行token验证

 

(2)token优点

1)无状态,可扩展:

      服务器不存储session信息,所以服务器和用户信息没有关联(无session亲和性);

      负载均衡服务器,用户请求可以传递到任何一台服务器上面;

      支持跨域且支持移动端

2)安全性高:避免了基于session的CSRF

3)本质使用cpu算力换取内存

 

  

 

 

 

 

 

 

 

 

转载地址:http://ykxzi.baihongyu.com/

你可能感兴趣的文章
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Mysql索引
查看>>
OGNL投影查询
查看>>
OGNL投影查询
查看>>
OGNL投影查询
查看>>
Redis之RDB和AOF持久化
查看>>