Java TokenProcessor令牌校验工具类

发布时间 - 2026-01-11 00:05:34    点击率:

关于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令牌校验工具类,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# tokenprocessor  # 校验工具类  # java单点登录(SSO)的实现  # java冷知识:javac AbstractProcessor详解  # 详解Java8与Runtime.getRuntime().availableProcessors()  # Java redisson实现分布式锁原理详解  # Java使用Redisson分布式锁实现原理  # Java编程redisson实现分布式锁代码示例  # 入门到精通Java SSO单点登录原理详解  # 表单  # 令牌  # 给大家  # 不存在  # 小编  # 中得  # 就在  # 在此  # 说了  # 不多  # 所示  # 转换成  # 所述  # 给我留言  # 将之  # 感谢大家  # 为避免  # 疑问请  # 有任何  # request 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: C#如何调用原生C++ COM对象详解  如何用低价快速搭建高质量网站?  Laravel如何实现多对多模型关联?(Eloquent教程)  如何在云虚拟主机上快速搭建个人网站?  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  如何正确下载安装西数主机建站助手?  JavaScript常见的五种数组去重的方式  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  网站页面设计需要考虑到这些问题  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  香港服务器网站推广:SEO优化与外贸独立站搭建策略  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  如何为不同团队 ID 动态生成多个非值班状态按钮  如何确保西部建站助手FTP传输的安全性?  如何在不使用负向后查找的情况下匹配特定条件前的换行符  Laravel Fortify是什么,和Jetstream有什么关系  WEB开发之注册页面验证码倒计时代码的实现  如何获取上海专业网站定制建站电话?  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  javascript日期怎么处理_如何格式化输出  如何为不同团队 ID 动态生成多个“认领值班”按钮  JavaScript实现Fly Bird小游戏  canvas 画布在主流浏览器中的尺寸限制详细介绍  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  Bootstrap CSS布局之列表  进行网站优化必须要坚持的四大原则  在centOS 7安装mysql 5.7的详细教程  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  nginx修改上传文件大小限制的方法  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  Laravel如何配置Horizon来管理队列?(安装和使用)  JavaScript如何实现继承_有哪些常用方法  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  网站制作价目表怎么做,珍爱网婚介费用多少?  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  Laravel如何实现用户注册和登录?(Auth脚手架指南)  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  如何用VPS主机快速搭建个人网站?  利用python获取某年中每个月的第一天和最后一天  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  香港服务器建站指南:免备案优势与SEO优化技巧全解析