java token 工具类_Java TokenProcessor令牌校验工具类

关于TokenProcessor令牌校验工具类废话不多说了,直接给大家贴代码了,一切内容就在下面一段代码中,具体代码详情如下所示:

public class TokenProcessor {

private long privious;// 上次生成表单标识号得时间值

private static TokenProcessor instance = new TokenProcessor();

public static String FORM_TOKEN_KEY = "FORM_TOKEN_KEY";

private TokenProcessor() {

}

public static TokenProcessor getInstance() {

return instance;

}

/**

* 验证请求中得标识号是否有效,如果请求中的表单标识与当前用户session中的相同,返回结果true=

*/

public synchronized boolean isTokenValid(HttpServletRequest request) {

// 为避免session对象不存在时候创建Session对象

HttpSession session = request.getSession(false);

if (session == null) {

return false;

}

String saved = (String) session.getAttribute(FORM_TOKEN_KEY);

if (saved == null) {

return false;

}

String token = (String) request.getParameter(FORM_TOKEN_KEY);

if (token == null) {

return false;

}

return saved.equals(token);

}

/**

* 验证请求中得标识号是否有效,如果请求中的表单标识与当前用户session中的相同,返回结果true=

*/

public synchronized boolean isTokenValid(HttpServletRequest request,String token) {

// 未避免session对象不存在时候创建Session对象

HttpSession session = request.getSession(false);

if (session == null) {

return false;

}

String saved = (String) session.getAttribute(FORM_TOKEN_KEY);

if (saved == null) {

return false;

}

if (token == null) {

return false;

}

return saved.equals(token);

}

/**

* 清除存储在当前用户session中的表单标识号

*/

public synchronized void reset(HttpServletRequest request) {

HttpSession session = request.getSession(false);

if (session == null) {

return;

}

session.removeAttribute(FORM_TOKEN_KEY);

}

/**

* 产生表单标识号并将之保存在当前用户得session中

*/

public synchronized void saveToken(HttpServletRequest request) {

HttpSession session = request.getSession();

try {

byte id[] = session.getId().getBytes();

long current = System.currentTimeMillis();

if (current == privious) {

current++;

}

privious = current;

byte now[] = String.valueOf(current).getBytes();

MessageDigest md = MessageDigest.getInstance("MD5");

md.update(id);

md.update(now);

String token = toHex(md.digest());

session.setAttribute(FORM_TOKEN_KEY, token);

} catch (NoSuchAlgorithmException e) {

}

}

/**

* 将一个字节数转换成十六进制得字符串

*/

public String toHex(byte buffer[]) {

StringBuffer sb = new StringBuffer(buffer.length * 2);

for (int i = 0; i < buffer.length; i++) {

sb.append(Character.forDigit((buffer[i] & 0x60) >> 4, 16));

sb.append(Character.forDigit(buffer[i] & 0x0f, 16));

}

return sb.toString();

}

}

以上所述是小编给大家介绍的Java TokenProcessor令牌校验工具类,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值