双token实现token超时策略示例

 更新时间:2014年02月28日 09:04:50   作者:  
用于restful的app应用无状态无sesion登录示例,需要的朋友可以参考下

复制代码 代码如下:

import com.google.common.base.Charsets;
import com.google.common.hash.Hashing;
import java.util.Date;
import org.apache.commons.lang.time.FastDateFormat;

/**
 *
 * @author Charles
 */
public class TokenUtils {

    private static final String privateKey = "fdas34ljfr好sja@#8$%dfkl;js&4*daklfjsdl;akfjsa342";

    public static String getToken(String password, String date) {
        return Hashing.md5().newHasher().
                putString(password, Charsets.UTF_8).
                putString(privateKey, Charsets.UTF_8).
                putString(date, Charsets.UTF_8).hash().toString();
    }

   
    public static String getToken(String password, Date date) {
        return Hashing.md5().newHasher().
                putString(password, Charsets.UTF_8).
                putString(privateKey, Charsets.UTF_8).
                putString(getDate(date), Charsets.UTF_8).hash().toString();
    }

   
    public static String getToken(String password) {
        return Hashing.md5().newHasher().
                putString(password, Charsets.UTF_8).
                putString(privateKey, Charsets.UTF_8).putString(getDate(), Charsets.UTF_8).hash().toString();

    }

    public static boolean validToken(String token, String password) {
        String confirm = getToken(password);
        if (confirm.equals(token)) {
            return true;
        } else {
            return false;
        }
    }

    public static String getDate() {
        Date date = new Date(System.currentTimeMillis());
        return FastDateFormat.getInstance("yyyyMMddHH").format(date);

    }
    public static String getDate(Date now) {

        return FastDateFormat.getInstance("yyyyMMddHH").format(now);

    }
     public static String getNextHour(Date now) {
        Date date = new Date(now.getTime()+60*60*1000);

        return FastDateFormat.getInstance("yyyyMMddHH").format(date);

    }
}

相关文章

  • Java实现FTP服务器功能实例代码

    Java实现FTP服务器功能实例代码

    FTP(File Transfer Protocol 文件传输协议)是Internet 上用来传送文件的协议,本文给大家分享Java实现FTP服务器功能实例代码,对java实现ftp服务器相关知识感兴趣的朋友一起学习吧
    2015-12-12
  • java制作复制文件工具代码分享

    java制作复制文件工具代码分享

    如果目标位置没有同名文件,则直接拷贝过去;如果目标位置已有同名文件,则比对文件的最后修改日期,来进行覆盖或者忽略。程序会在可以在复制过程中自动创建目录,并生成log文件,创建了哪些目录、文件,覆盖了哪些文件、跳过了哪些文件,文件的时间、位置等信息都一目了然
    2014-01-01
  • idea中创建jsp项目的详细实战步骤

    idea中创建jsp项目的详细实战步骤

    才学javaWeb,以防自己忘记创建项目的过程,所以浅浅的记录一下吧,下面这篇文章主要给大家介绍了关于idea中创建jsp项目的详细步骤,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • WebSocket 中使用 @Autowired 注入对应为null的解决方案

    WebSocket 中使用 @Autowired 注入对应为null的解决方案

    SpringBoot集成WebSocket时,会遇到service对象为null的情况,原因是Spring默认为单例模式与WebSocket的多对象模式相冲突,当客户端与服务器端建立连接时,会创建新的WebSocket对象,本文给大家介绍WebSocket 中使用 @Autowired 注入对应为null的问题,感兴趣的朋友一起看看吧
    2024-10-10
  • SpringBoot集成iText实现电子签章功能

    SpringBoot集成iText实现电子签章功能

    这篇文章主要为大家详细介绍了SpringBoot如何集成iText实现电子签章功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-10-10
  • idea解决程序包不存在报错的八种解决方法

    idea解决程序包不存在报错的八种解决方法

    这篇文章主要介绍了idea解决程序包不存在报错的八种解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-02-02
  • MyBatis将查询出的两列数据装配成键值对的操作方法

    MyBatis将查询出的两列数据装配成键值对的操作方法

    这篇文章主要介绍了MyBatis将查询出的两列数据装配成键值对的操作代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • java 代理模式及动态代理机制深入分析

    java 代理模式及动态代理机制深入分析

    这篇文章主要介绍了java 代理模式及动态代理机制深入分析的相关资料, 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问,需要的朋友可以参考下
    2017-03-03
  • Java synchronized最细讲解

    Java synchronized最细讲解

    synchronized是Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。本文给大家介绍java中 synchronized的用法,对本文感兴趣的朋友一起看看吧
    2021-09-09
  • 基于Scala和Java方法的相互调用

    基于Scala和Java方法的相互调用

    这篇文章主要介绍了Scala和Java方法的相互调用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11

最新评论