持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第24天,点击查看活动详情
登录鉴权方式
今天我们一起来学习一下,登录鉴权的方式
前言
相信各位开发者都已经接触过了系统登录的场景,现在我们来思考一个问题,那就是在客户请求到来的时候,服务器是怎么判断该用户有没有权限呢?如果有权限的话,是什么权限呢?最经典的一个例子就是用户登录问题,系统内部是怎么判断该用户是否已经登录了?
我们都知道http是一个无状态的,也就是说它不会记录当前连接的信息,最明显的一个例子就是可能你访问同一个系统的多个页面需要多次登录。
可是实际上,我们大家平时使用的各种系统都是只需要一次登录,就可以在整个系统中进行各种操作了;这是怎么做到的呢?
其实要做到上述这样子,并不难,虽然http是无状态的,但是我们可以通过其他来记录客户端和服务端。。。
下面具体介绍两种实现方式:
基于cookie和session的实现
- 在客户端第一次访问服务器的时候,服务器在响应客户端的时候,在客户端中设置一个cookie,以后每次客户端发出请求的时候,都带上cookie(cookie就相当于记录了客户端和服务端的连接信息)
- 当然啦,还可以直接在服务端设置session,session的原理和cookie的差不多。
基于jwt的token鉴权
在客户端第一次访问服务端的时候,服务端会根据用户的基本信息(如id等)再加上一些其他字符,再使用jwt加密,最终生成token。
token就相当于一种令牌一样,以后的每次访问,客户端都会带上token,这样服务端就可以通过token解密得到了用户的基本信息,从而实现了用户鉴权。
总结
其实以上的两种方式都是通过记录用户和服务端的一些基本信息来实现的;使用以上两种方法都可以实现一个系统只需要登录一次即可。