本来有JWT这种生成token验证的强大工具,但有时考虑到项目的实际需求,会利用GUID/UUID来生成token,当然GUID/UUID能生成很多具有唯一性的验证结果,所以这里主要记录下GUID/UUID的使用方法
public String createTKN(String account,String pin,String imei){
SaveToDb st = new SaveToDb();
// 创建 GUID 对象
UUID uuid = UUID.randomUUID();
// 得到对象产生的ID
String token = uuid.toString();
// 转换为大写
token = token.toUpperCase();
// 替换 “-”变成空格
token = token.replaceAll("-", "");
System.out.println(token);
//向数据库中保存token及用户信息
Map<String , Object> params = new HashMap<>();
params.put("st_sid", token);
params.put("st_account", account);
String tableName = "表名";
//此处用的是mybaits的方法来保存数据到数据库,具体可看http://blog.csdn.net/suresand/article/details/52540684
st.save(tableName , params);
//保存后下次就可以通过用户的token在数据库来做个验证
return "token";
}
/**
* 验证用户的token值是否正确
* @param account
* @param tokenValue
* @return 正确--1,错误--0
*/
public String checkTKN(String account, String tokenValue){
SaveToDb st = new SaveToDb();
Map<String, Object> params=new HashMap<>();
//在数据库中查询该用户的token是否存在
params.put("st_sid", tokenValue);
String tableName = "T_HY_LOGINTKN_I";
//用的是一个list集合来接受map集合,所以后面需要转换出来
List rs = new ArrayList<>();
//同样用的mybaits的查询方法
rs = st.select(tableName , params);
Map<String, Object> map=new HashMap<>();
map = (Map<String, Object>) rs.get(0);
//检查该token是否属于该用户
if(account.equals( map.get("ST_ACCOUNT").toString())){
return "1";
}else{
return "0";
}
}