在开发电商类项目的时候,都要保持登陆状态,避免用户的反复登陆,当然要实现这种逻辑有很多种方法,我就说下我在项目中用拦截器实现的自动登陆
我们项目是直接将token信息放到header里,token的有效期是三十分钟,如果token失效,再根据服务器返回来的code,来判断,再通过自动登陆接口,获取新的token放到header里,并生成新的request 请求服务器,如果你的项目服务器也是这样操作的,可以借鉴下我的代码:
先看下自己创建的服务器交互类,里面一般会封装服务器请求接口和单利实例,最主要的还是创建拦截器:
//设置拦截器,对请求参数做签名处理 Interceptor interceptor = new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Request request = chain.request(); // 新的请求 Request newRequest = null; String token = SpUtil.getInstance(context).getStringValue("token"); if (oldBody instanceof FormBody) { if (!TextUtils.isEmpty(token)) { //token没失效,继续用 newRequest = request.newBuilder().url(request.url()).post(formBuilder.build()).header("token", token).build(); } else{