手机APP登录的时候发送用户名和密码到服务器,服务器验证用户名和密码,
如果成功,以某种方式比如随机生成32位的字符串作为token,存储到服务器中(创建Table),
并返回token到客户端,以后客户端再请求时,验证该token就可以了。将客户端保存的token与服务器存储的token比对,然后服务器端验证token,成功返回所需要的结果,失败返回错误信息,让其重新登录。
如何有什么不合理的地方,还请指出!
如果成功,以某种方式比如随机生成32位的字符串作为token,存储到服务器中(创建Table),
并返回token到客户端,以后客户端再请求时,验证该token就可以了。将客户端保存的token与服务器存储的token比对,然后服务器端验证token,成功返回所需要的结果,失败返回错误信息,让其重新登录。
其中服务器上token设置一个有效期,每次客户端请求的时候都验证token和有效期。
这里,保存在客户端的token存在哪里?
本人分析了android存储数据的五种方式,
有两种可选:
1、使用sharedPreferences存储token。sharedPreferences可用于保存少量数据,应用程序的各种配置信息以及口令密码等,而且我们的用户名也保存在这里(本项目使用)。
2、sqlite。需要创建数据库、表等。
最终选择了方法1。
就本项目来说,在登录的相关部分加上
String jsonDatas = msg.obj.toString().trim();
Gson gson = USAUtil.getGson();
TokenUtils accesstoken = gson.fromJson(jsonDatas,TokenUtils.class );
用于解析token,其中TokenUtils是set、get方法的工具类。
然后再保存token到sharedPreferences就可以了,
saveAccessToken(XXX.this, accesstoken.getToken());
具体的实现就不多说了。
如何有什么不合理的地方,还请指出!