java中Token验证用法 什么是Token

栏目: Java · 发布时间: 8年前

内容简介:java中Token验证用法 什么是Token

突然发现这篇 java 博文的浏览器已经破三千了,我觉得还是有必要提一下,在实际的工作项目中,如果采用这种方法的话,

可能代码量会比较多,很繁琐,但优点是对于新人可能是更好的去理解吧(至少我最初是这么认为的)。

这里我推荐一篇博文吧,很简便:Spring MVC拦截器+注解方式实现防止表单重复提交

java中Token验证用法 什么是Token

-----tag-----

什么是Token:它是一个令牌,随机不可预测的。

为什么需要使用Token: 1,防止表单的重复提交

2:,防止跨站点的请求伪造

Token的使用流程是:首先在服务器端生成一个随机的token值并在服务器端保存起来,然后向客户端请求的过程中把这个Token值传过去。之后页面操作完毕后向服务器提交数据的过程中又把这个Token值传回服务器端,同时比较这个Token值是否已经存在于服务器端,若存在,则此次访问是安全的,并在服务器端把这个Token值删除,若不存在,则此次访问无效。

好,了解Token的用法之后来看代码(项目中可直接粘贴使用)

---------------------------------------------------------------------以下为转载的代码:

(一)首先是Token工具类

[java]

  1. package  com.company.util;
  2. import  java.util.ArrayList;
  3. import  javax.servlet.http.HttpSession;
  4. public   class  Token {
  5. private   static   final  String TOKEN_LIST_NAME =  "tokenList" ;
  6. public   static   final  String TOKEN_STRING_NAME =  "token" ;
  7. private   static  ArrayList getTokenList(HttpSession session) {
  8.        Object obj = session.getAttribute(TOKEN_LIST_NAME);
  9.         if  (obj !=  null ) {
  10.            return  (ArrayList) obj;
  11.        }  else  {
  12.           ArrayList tokenList =  new  ArrayList();
  13.           session.setAttribute(TOKEN_LIST_NAME, tokenList);
  14.            return  tokenList;
  15.        }
  16.     }
  17. private   static   void  saveTokenString(String tokenStr, HttpSession session) {
  18.        ArrayList tokenList = getTokenList(session);
  19.        tokenList.add(tokenStr);
  20.        session.setAttribute(TOKEN_LIST_NAME, tokenList);
  21.     }
  22. private   static  String generateTokenString(){
  23.         return   new  Long(System.currentTimeMillis()).toString();
  24.     }
  25. /** */ /**
  26.      * @param HttpSession session
  27.      */
  28.      public   static  String getTokenString(HttpSession session) {
  29.        String tokenStr = generateTokenString();
  30.        saveTokenString(tokenStr, session);
  31.         return  tokenStr;
  32.     }
  33. /** */ /**
  34.      * otherwise, return false.
  35.      * @param String tokenStr
  36.      * @param HttpSession session
  37.      */
  38.      public   static   boolean  isTokenStringValid(String tokenStr, HttpSession session) {
  39.         boolean  valid =  false ;
  40.         if (session !=  null ){
  41.           ArrayList tokenList = getTokenList(session);
  42.            if  (tokenList.contains(tokenStr)) {
  43.              valid =  true ;
  44.              tokenList.remove(tokenStr);
  45.           }
  46.        }
  47.         return  valid;
  48.     }

(二)JSP页面中

1:先import该Token工具类

[java]

  1. <%@ page  import = "com.company.util.Token"  %>

2:在表单中添加隐藏的Token值

[html]

  1. < form >
  2.      < input   type = "hidden"   name = "<%=Token.TOKEN_STRING_NAME %>"   value = "<%=Token.getTokenString(session) %>" >
  3. </ form >

(三)在服务器端Servlet中添加如下代码

[java]

  1. if (Token.isTokenStringValid(request.getParameter(Token.TOKEN_STRING_NAME), request.getSession())){
  2.      //To Do 业务代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

High Performance Python

High Performance Python

Andrew Lewis / O'Reilly Media, Inc. / 2010-09-15 / USD 34.99

Chapter 1. Introduction Section 1.1. The High Performance Buzz-word Chapter 2. The Theory of Computation Section 2.1. Introduction Section 2.2. Problems Section 2.3. Models of Computati......一起来看看 《High Performance Python》 这本书的介绍吧!

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具