最近做一个移动APP的项目,当用户登陆一段时间后从客户端请求服务器时需要验证用户身份,通常在web中的做法都是使用session或cooike来保持会话,但是放到手机端肯定是不合适的。我们使用qq或其他一些手机软件是都知道,登陆一次以后通常是不再需要再次登录的,这样如果使用session来实现也是可以的,但是如果把session的生命周期设为永久有效的话,对服务器端的资源消耗是非常大的。因此提出了使用token,首先说什么是token,翻译成中文就是“令牌”的意思。
在Javaweb中servlet、Struts、sping都有token机制(令牌验证机制),但是在web项目中token的作用是用来防止表单重复提交,一般不是用来验证身份,而且,在web中token的值在每次跟服务器交互后都会发生变化,也就是说每次服务器都会生成一个新的token发送给客户端(浏览器)。如果是用来让移动端验证身份是很难实现的,但是我们可以使用token验证的思想,让服务器端为每个用户生成一个特定的字符串作为他们的“令牌”,服务器将这个字符串保存下来,当用户登陆一段时间后需要向服务器请求数据时带上这个标示即可,不必每次都验证用户名密码。生成这个字符串我使用的是用户名+密码+用户登录时间使用MD5加密,下面贴上MD5加密代码。
用到的第三方包:commons-codec-1.8.jar
Java
import org.apache.commons.codec.digest.DigestUtils;
/**
* 创建日期:2015-1-5下午4:29:38
* 作者:admin
*TODO
**/
public class MD5_2 {
public static void main(String[] args) {
String str1 = DigestUtils.md5Hex("fghhfjgfhkghj");
System.out.println(str1);
System.out.println(str1.length());
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
importorg.apache.commons.codec.digest.DigestUtils;
/**
* 创建日期:2015-1-5下午4:29:38
* 作者:admin
*TODO
**/
publicclassMD5_2{
publicstaticvoidmain(String[]args){
Stringstr1=DigestUtils.md5Hex("fghhfjgfhkghj");
System.out.println(str1);
System.out.println(str1.length());
}
}
喜欢 (5)or分享 (0)