鉴权
刚接触接口自动化的同学应该遇到的第一个拦路虎就是鉴权,本文就着重来讲一讲鉴权。
一、鉴权的定义
1、鉴权:是指验证用户是否拥有访问系统的权利。
2、为什么要鉴权:对用户进行鉴权,防止非法用户占用网络资源,非法用户接入网络,被骗取关键信息。
3、现如今的企业项目主要是session+cookie鉴权或者token鉴权,token鉴权更广泛。
二、session+cookie鉴权
1、鉴权流程图

2、过程详解
2.1、用户注册的时候,客户端提交用户名和密码,服务端会存储用户名和密码,为了防止被脱库,密码存储一般会进行加密存储,比如md5、rsa加密等待。
2.2、注册完成后,用户发起登陆,客户端提交用户名和密码,服务端会对用户提交的数据进行校验,用户名和密码正确,此时服务端会根据用户信息(用户id,用户名,user_agent)等创建一个session,并存储在数据库中(一般是存储在redis中),保存好之后,服务端会将这个session通过响应头的Set-cookie字段返回给客户端。
2.3、客户端收到服务端的响应,浏览器会自动将响应头Set-cookie的内容添加到后续请求的请求头的cookie中(代码实现要手动添加,或者使用创建session的方式自动管理cookie),在请求后续其他接口时会始终携带这个请求头。
2.4、服务端收到客户端发起的请求后,会从请求头中将session提取出来与之前存储到redis中的session进行对比,如果一致则返回对应的接口数据给客户端,如果不一致或者是超时则不返回接口数据给客户端。
2.5、session鉴权缺点很明显,服务端存储压力较大,需要大量的存储空间来存储session,因此token鉴权就应运而生了。
三、token鉴权
1、鉴权流程图

2、过程详解
2.1、用户发起登陆,客户端提交用户名和密码,服务端会对用户提交的数据进行校验,校验通过以后此时会提取用户关键信息(比如用户名密码、用户id、时间戳等信息进行排序、然后再进行签名运算)通过特定的算法生成token,然后将这个token放在响应头里面返回给客户端。
2.2、客户端收到响应结果,然后会从响应结果里面获取token(这个步骤前端工程师完成),然后将token放在后续其他请求的请求头token字段中(通常情况下是这个字段,具体由后端决定),再去请求后续其他接口。
2.3、服务端再次收到客户端请求,此时服务端会去请求头中取出token,然后对token进行解签,获取到用户关键信息,再去数据库去进行查询是否存在该用户。但凡这个token被修改过,解签就会失败,鉴权就自然失败了。
2.4、服务端鉴权成功就会返回对应接口响应数据给客户端,鉴权失败就不会返回对应数据。

浙公网安备 33010602011771号