服务端以api的方式将数据响应给客户端是目前的趋势,可以用在前后端分离的架构中,前后端分离之后,前后端人员能够更加专注于自己板块的东西,也可以用在服务端与服务端相互调用中。(日常最多的就是我们提供接口给前端开发人员,还有一些是提供给其他服务的模块的后端人员两种情况。)
下面我们着重说一声,后端每个工程或者模块之间通过提供http接口。需要注意考虑哪些东西:
拿到接口后,客户端就可以通过api获取接口提供的数据,而返回的数据一般分为两种情况,xml和json,在这个过程中,服务器并不知道,请求的来源是什么,有可能是别人非法调用我们的接口来获取数据,因此我们的api接口就要使用安全验证。
一、使用token进行用户身份认证
用户身份认证的流程图如下:
具体说明如下:
①、用户登录时,客户端请求接口,传入用户名和密码
②、服务端对用户身份进行验证。若验证失败,则返回错误结果;若验证通过,则生成一个随机不重复的token,并将其存储在redis中(假设我们以存在redis中为例,也可以存储在DB中,存储在哪里具体看自己即可),设置一个过期时间。其中,redis的key为token,value为验证通过后获得的用户信息。
③、用户身份校验通过后,后台服务将生成的token返回客户端。客户端请求后续其他接口时,需要带上这个token。服务端会统一拦截接口请求,进行Token有效性校验,并从中获取用户信息,供后续业务逻辑使用。
二、使用sign防止传入参数被篡改
为了防止中间人攻击(客户端发来的请求被第三方拦截篡改,或接口被不信任的第三方进行调用),引入参数的签名机制。</