测试面试常见问题

1、什么是token?

参考回答:
定义:token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。
使用场景:
在实际应用中,客户端频繁的向服务端请求数据,服务端需要去数据库查询用户名和密码,来验证对比用户名和密码是否正确,这样操作会给数据库造成很大压力,由此就出现的token 的应用场景,当用户第一次登录后,服务器生成一个token返回给客户端,以后客户端只需带上这个token给服务端发送数据即可,无需带上用户名和密码。
实现原理:
基于token的身份验证过程如下:
1、客户端使用用户名和密码请求登录;
2、服务端收到请求,去验证用户名和密码;
3、验证成功后,服务端会签发一个token,再把token发送给客户端;
4、客户端收到token后会把token存储起来,并每次向服务端请求资源的时候都需要带着服务端签发的token;
5、服务端收到请求,然后验证客户端请求里面的带着的token,如果验证成功,就向客户端返回请求的数据。

2、token与session、cookie有什么区别

1、Cookie:
Cookie由服务器生成,发送给浏览器,浏览器将Cookie以kv形式保存到某个目录下的文本文件内,下次请求同一网站时会带着该Cookie发送给服务器

2、Session:
服务器给每个客户端分配不同的“身份标识”,即Session,其保存在服务器上,用户离开网站后Session就会被销毁

3、Token:
Token相比Cookie、Session主要有以下优势,这也是它们之间的主要区别:
1)无状态、可扩展
token机制在服务端不需要存储session信息,因为token自身包含登录用户的信息,只需要在客户端cookie或者介质存储状态信息,因此,在客户端存储token是无状态的,并且能够被扩展。也因正因如此,负载均衡器能够将用户信息从一个服务传到其他服务器上

2)安全性
请求中发送token而不在是发送cookie,这样能够防止CSRF(跨站请求伪造)。即使在客户端使用cookie存储token,cookie也仅仅是一个存储机制而不用于认证。不将信息存储在session中,让我们少了对session的操作。token是有时效的,一段时间之后用户需要重新认证,而且token有撤回的操作,通过token revocation可以使一个特定的token或者一组相同认证的token无效

3)跨平台
当你的客户端是一个原生平台(ios、Android)时,Cookie是不被支持的(你需要通过Cookie容器处理),这时采用token认证机制就会简单得多。

4)基于标准化
API可以采用标准化的JSON Web Token(JWT),这个标准已经存在多个后端库(.NET、Ruby、Java、Python、PHP)和多家公司的支持(Firebase,Google,Microsoft)

5)支持跨域访问
Cookie是不允许跨域访问的,但token机制是不存在这个问题的,只需要传输的用户认证信息通过HTTP头传输即可

6)更适用CDN
可以通过内容分发网路请求服务端的所有资料(如:javascript、HTML、图片等),而服务端只需要提供API即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值