两次阿里面试总结出来的登录问题,我来教你这么回答

本文总结了两次阿里面试中遇到的登录问题。首先介绍了基本的session登录流程,当涉及多服务器时,提出了两种解决方案:中心化(如使用MySQL、Redis)和去中心化(使用token)。讨论了token的验证过程,强调了session与token的优缺点。最后提醒,面试中深入理解并能详细解释技术细节至关重要。
摘要由CSDN通过智能技术生成

两次阿里面试总结出来的登录问题,我来教你这么回答

前言

面试的时候,总是被问到登录问题,看到很多面经,基本上都是点到为止,其实关于这方面的话,面试官总是在我简单的答完之后,继续抛出一个问题或者讲明出现的一种情况,由此来判断你的深度,你的全局关,你的项目的层次等。

下面我将讲一下两次面试的时候我的答案和总结

First

登录问题

  • 用户第一次输入用户名和密码之后,会向服务器发送一个post请求,服务器接收到请求的时候会生成一个session,然后会把sessionid复制一份,也就是JESSONID,接着会把JESSONID返回给浏览器,浏览器会把JESSONID存储在Cookie里面
  • 用户再次访问服务器的时候,会携带JESSONID,在服务端与sessionid进行对比,如果匹配则允许访问,如果不匹配则拦截

sessionid存储在哪里?

  • 一般来说存储在服务器的内存中

如果有多台服务器呢?

PS:其实这里也是看你做过的项目是单服务器运用还是多服务器的情况,由此判断分水岭

  • 多台服务器的情况的话,只是简单的提到这里需要实现服务器之间的共享问题,至于这么操作就是没有答出来,

Second

多台服务器的情况

PS:其实是有实现过,但是对于所学知识平常更多的了解这么去实现,没有去多了解技术本身,细节处没有做好,这也是大多数程序员的通病

  • 第一种是中心化的操作,就是我们依旧和上面讲的一样,知识这里我们的共享问题,可以使用MYSQL数据库、文件等实体化操作来实现共享,可以使用Redis数据库来进行优化,类似黑名单的情况
  • 第二种是去中心化的操作,我们不在使用session来存储,而是使用token令牌来处理

关于token

  • 用户第一次输入用户名和密码之后,会向服务器发送一个post请求,服务器接收到请求的时候会比对用户名和密码是否正确,如果正确的话,会生成token令牌,服务器会把token返回个浏览器,浏览器会存储在localStorage或者sessionStorage里面
  • 用户再次访问的时候会携带这个token令牌,服务器会先进行验签的操作,根据token令牌的Header和Paylod进行base64的转码之后使用header中声明的加密方式加密加盐secret组合加密,这样与第三部分的signature签名进行对比,如果匹配则允许访问,如果不匹配则拦截

对比

session的操作就是需要去查询数据库,增加了我们数据库的负担和系统的操作

token则是无状态化,可扩展性好

总结

其实,到这里就已经答得很好了,但是一个问题的抛出总是会引来下一个问题的的引入的,比如token的生成方式,有兴趣话可以自己去了解JWT(json web token),翻看我之前的文章,编写不易,点赞、关注、收藏,支持一下。其实还有很多可以讲的,但是程序员的学习更多的是需要自己去摸索出来的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值