跨域认证教学内容l第一节Session认证l第二节Token认证l第三节JWT的使用Session认证互联网服务离不开用户认证。一般流程是下面这样。n用户向服务器发送用户名和密码。n服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等。n服务器向用户返回一个session_id,写入用户的Cookie。n用户随后的每一次请求,都会通过Cookie,将session_id传回服务器。n服务器收到session_id,找到前期保存的数据,由此得知用户的身份。Session认证nsession认证流程。Session认证session认证的方式应用非常普遍,但也存在一些问题,扩展性不好,如果是服务器集群,或者是跨域的服务导向架构,就要求session数据共享,每台服务器都能够读取session,针对此种问题一般有两种方案:n一种解决方案是session数据持久化,写入数据库或别的持久层。各种服务收到请求后,都向持久层请求数据。这种方案的优点是架构清晰,缺点是工程量比较大。n一种方案是服务器不再保存session数据,所有数据都保存在客户端,每次请求都发回服务器。Token认证就是这种方案的一个代表。Token认证Token是在服务端产生的一串字符串,是客户端访问资源接口(API)时所需要的资源凭证,流程如下:n客户端使用用户名跟密码请求登录,服务端收到请求,去验证用户名与密码n验证成功后,服务端会签发一个token并把这个token发送给客户端n客户端收到token以后,会把它存储起来,比如放在cookie里或者localStorage里n客户端每次向服务端请求资源的时候需要带着服务端签发的tokenn服务端收到请求,然后去验证客户端请求里面带着的token,如果验证成功,就向客户端返回请求的数据Token认证ntoken认证流程。Token认证的特点n基于token的用户认证是一种服务端无状态的认证方式,服务端不用存放token数据。n用解析token的计算时间换取session的存储空间,从而减轻服务器的压力,减少频繁的查询数据库ntoken完全由应用管理,所以它可以避开同源策略JWTnJSONWebToken(简称JWT)是一个token的具体实现方式,是目前最流行的跨域认证解决方案。nJWT的原理是,服务器认证以后,生成一个JSON对象,发回给用户,具体如下:n用户与服务端通信的时候,都要发回这个JSON对象。服务器完全只靠这个对象认定用户身份。n为了防止用户篡改数据,服务器在生成这个对象的时候,会加上签名。JWTJWT的由三个部分组成,依次如下:nHeader(头部)nPayload(负载)nSignature(签名)三部分最终组合为完...