实现一个简单的token认证
来源:互联网 发布:数据共享交换 编辑:程序博客网 时间:2024/06/06 08:47
1.对前台的请求地址做处理,对请求参数进行排序后,拼入请求地址.
2.在排序后的参数结尾拼入约定的key,进行MD5计算得出一个token拼入请求地址,发送请求.
3.请求的接收方得到地址,截取出所传的参数(去掉尾部的token)在结尾拼入约定的key,进行MD5计算得出token与传过来的token进行比较.
4.下面给出关键部分的代码
public class HttpUtils{
private static String keyStr = "keyTest";//双方约定的key
public static String createNewUrl(String oldUrl){
int index = oldUrl.indexOf("?");//返回“?”的索引
String url = oldUrl.subString(0,index+1);//截取请求路径+"?"
String addVersionStr = urlParam.substring(index + 1, urlParam.length());//截取请求参数
String[] strArr = addVersionStr.split("&");//将请求参数分隔成数组
Arrays.sort(strArr);//对请求参数数组进行排序
StringBuffer strBuffer = new StringBuffer();
//将请求参数进行重新拼接
for (String str : strArr) {
strBuffer.append(str + "&");
}
String result = strBuffer.substring(0, strBuffer.length() - 1);//得到新的请求参数字符串
return url + result + "&token=" + md5(result + "&" + keyStr);//对请求参数进行MD5计算,得出token值一起拼到请求路径后面
}
/**
* MD5加密
*
* @param string
*/
public static String md5(String string) {
byte[] hash;
try {
hash = MessageDigest.getInstance("MD5").digest(string.getBytes("UTF-8"));
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("MD5 should be supported?", e);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("UTF-8 should be supported?", e);
}
StringBuilder hex = new StringBuilder(hash.length * 2);
for (byte b : hash) {
if ((b & 0xFF) < 0x10)
hex.append("0");
hex.append(Integer.toHexString(b & 0xFF));
}
return hex.toString();
}
接受方的核心代码基本如上,这里不做累述.
}
- 实现一个简单的token认证
- Satellizer: 一个简单易用的、端到端的基于 token 的 AngularJS 认证模块
- 关于django-channels的token认证实现
- NodeJS 实现基于 token 的认证应用
- 在ASP.NET Core中实现一个Token base的身份认证
- rest token的一个实现
- 使用 AngularJS & NodeJS 实现基于 token 的认证应用
- 使用 AngularJS & NodeJS 实现基于 token 的认证应用
- 使用 AngularJS & NodeJS 实现基于 token 的认证应用
- 使用 AngularJS & NodeJS 实现基于 token 的认证
- 使用 AngularJS & NodeJS 实现基于 token 的认证应用
- 使用 AngularJS & NodeJS 实现基于 token 的认证应用
- json web token的简单实现 JAVA
- app令牌的一个token实现
- 一个简单的CA认证例子
- 一个简单的php LDAP认证脚本
- 一个简单的ASP.NETForms身份认证
- 一个简单的登录认证功能
- Neutron学习笔记
- 括号匹配算法
- Best Time to Buy and Sell Stock
- 使用Android Studio快速上传项目到github
- Windows 远程桌面不够Copy文件
- 实现一个简单的token认证
- pyhthon下中文报错问题
- java中volatile关键字的含义
- 报错:Unable to execute dex: Multiple dex files define
- Eclipse插件开发中的Action
- Oracle 11g 的新特性 —— 虚拟列
- Reservior Sampling (蓄水池抽样算法)
- jQuery Validate + Ckeditor 验证 textarea (request) 解决方式
- Spring定时任务的几种实现