由于没有获取正规做CAS的流程,这里根据网上的资料,写了一个自己觉得还可以的方案流程,留着备用
名称介绍:
token:用于验证请求是否合法
refreshToken:当token失效后,客户端发送token和refreshToken刷新token
Token保存的值:
除了保存用户的基本信息(如userId,name)外,还需要保存一个随机码(如uuid),以便区分不同客户端的登陆状态
大概流程:
客户端登陆后,服务端返回token和refreshToken,并在缓存中保存 key(token),value(refreshToken+payLoad保存)
由于token的有效期比较短,当token过期后,客户端通过服务端返回的refreshToken和token向服务端请求刷新token。服务端收到请求后,生成新的token和refreshToken,并在缓存中保存,同时将旧的token缓存清除,使之失效
ajax刷新token公用方法:
可以通过ajaxSetup设置error统一处理。在error里,this为ajax的配置参数,再重新调用 $.ajax(this)便可以再次发起请求
//刷新token码是否过期 var refreshTokenExp = true; $.ajaxSetup({ error:function (xhr, status, e) { if(xhr.status=="401"){ refreshToken();//刷新token if(!refreshTokenExp){ alert("token刷新成功") $.ajax(this);//重新调用 }else{ alert("refreshToken过期"); } } } })
流程图: