- 浏览: 78524 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
1. JSP Setting as below:
<body> <form id ="fromName" ...> ... <input type="hidden" id="htmlTOKEN" name="htmlTOKEN" value="${htmlTOKEN}"/> .... </form> ....
2. Java (Constants) -- CommonConstants.java
public class CommonConstants { ..... public static final String TRANSACTION_TOKEN_KEY = "actionTOKEN"; public static final String TOKEN_KEY = "htmlTOKEN"; ...... }
3. Java (Token method) -- Named as TokenProcessor.java
import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import com.requestprocessing.WorkContext; import com.requestprocessing.servlet.ServletWorkContext; import com.common.module.CommonConstants; public class TokenProcessor { private static TokenProcessor instance = new TokenProcessor(); private long previous; protected TokenProcessor() { } public static TokenProcessor getInstance() { return instance; } public synchronized boolean isTokenValid(WorkContext oCTX, String action) { if(action == null){ return isTokenValid(oCTX, false); }else{ return isTokenValid(oCTX, action, false); } } public synchronized boolean isTokenValid(WorkContext oCTX, boolean reset) { if(oCTX == null){ return false; } String saved = (String)oCTX.getUserData(CommonConstants.TRANSACTION_TOKEN_KEY); if(saved == null){ return false; } if(reset){ resetToken(oCTX); } String token = (String) oCTX.getRequestParameter(CommonConstants.TOKEN_KEY); if( token == null || ("").equals(token)){ //return false; return true; }else{ return saved.equals(token); } } public synchronized boolean isTokenValid(WorkContext oCTX, String action, boolean reset) { if(oCTX == null){ return false; } String saved = (String)oCTX.getUserData(action + CommonConstants.TRANSACTION_TOKEN_KEY); if(saved == null){ return false; } if(reset){ resetToken(oCTX, action); } String token = (String) oCTX.getRequestParameter(CommonConstants.TOKEN_KEY); if( token == null || ("").equals(token)){ //return false; return true; }else{ return saved.equals(token); } } public synchronized void resetToken(WorkContext oCTX) { if(oCTX == null){ return; }else{ oCTX.removeUserData(CommonConstants.TRANSACTION_TOKEN_KEY); return; } } public synchronized void resetToken(WorkContext oCTX, String action) { if(oCTX == null){ return; }else{ if(action == null){ oCTX.removeUserData(CommonConstants.TRANSACTION_TOKEN_KEY); }else{ oCTX.removeUserData(action + CommonConstants.TRANSACTION_TOKEN_KEY); } return; } } public synchronized void saveToken(WorkContext oCTX) { String token = generateToken(oCTX); if(token != null){ oCTX.putUserData(CommonConstants.TRANSACTION_TOKEN_KEY, token); oCTX.putRequestData(CommonConstants.TOKEN_KEY, oCTX.getUserData(CommonConstants.TRANSACTION_TOKEN_KEY)); } } public synchronized void saveToken(WorkContext oCTX, String action) { String token = generateToken(oCTX); if(token != null && action == null){ oCTX.putUserData( CommonConstants.TRANSACTION_TOKEN_KEY, token); oCTX.putRequestData(CommonConstants.TOKEN_KEY, oCTX.getUserData(CommonConstants.TRANSACTION_TOKEN_KEY)); }else{ oCTX.putUserData(action + CommonConstants.TRANSACTION_TOKEN_KEY, token); oCTX.putRequestData(CommonConstants.TOKEN_KEY, oCTX.getUserData(action + CommonConstants.TRANSACTION_TOKEN_KEY)); } } public synchronized String generateToken(WorkContext oCTX) { HttpServletRequest request = ((ServletWorkContext)oCTX).getHttpServletRequest(); HttpSession session = request.getSession(); return generateToken(session.getId()); } public synchronized String generateToken(String id) { MessageDigest md; long current = System.currentTimeMillis(); try{ if(current == previous) current++; previous = current; byte now[] = (new Long(current)).toString().getBytes(); md = MessageDigest.getInstance("MD5"); md.update(id.getBytes()); md.update(now); return toHex(md.digest()); } catch (IllegalStateException e) { return (null); } catch (NoSuchAlgorithmException e) { return (null); } } private 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] & 0xf0) >> 4, 16)); sb.append(Character.forDigit(buffer[i] & 0xf, 16)); } return sb.toString(); } }
4. Java BaseProcessor (BaseProcessor.java)
public class BaseProjectRoomProcessor { ...... public String process(WorkContext oCTX){ ...... } protected boolean validateToken(WorkContext oCTX, String action){ TokenProcessor token = TokenProcessor.getInstance(); if(!token.isTokenValid(oCTX, action)){ token.resetToken(oCTX, action); return false; } else { token.saveToken(oCTX, action); return true; } } }
5. Java BaseResponseProcessor (BaseResponseProcessor.java)
public class BaseProjectRoomResponseProcessor{ ...... public String process(WorkContext oCTX){ ...... } protected void initToken(WorkContext oCTX, String action){ String tokenId = null; TokenProcessor token = TokenProcessor.getInstance(); if(action == null){ tokenId = (String)oCTX.getUserData(CommonConstants.TRANSACTION_TOKEN_KEY); if(tokenId == null){ token = TokenProcessor.getInstance(); token.saveToken(oCTX); oCTX.putRequestData(CommonConstants.TOKEN_KEY, oCTX.getUserData(CommonConstants.TRANSACTION_TOKEN_KEY)); }else{ oCTX.putRequestData(CommonConstants.TOKEN_KEY, oCTX.getUserData(CommonConstants.TRANSACTION_TOKEN_KEY)); } }else{ tokenId = (String)oCTX.getUserData(action + CommonConstants.TRANSACTION_TOKEN_KEY); if(tokenId == null){ token = TokenProcessor.getInstance(); token.saveToken(oCTX, action); oCTX.putRequestData(CommonConstants.TOKEN_KEY, oCTX.getUserData(action + CommonConstants.TRANSACTION_TOKEN_KEY)); }else{ oCTX.putRequestData(CommonConstants.TOKEN_KEY, oCTX.getUserData(action + CommonConstants.TRANSACTION_TOKEN_KEY)); } } } }
6. Java YourResponseProcessor (YourResponseProcessor.java)
public class XXXXResponseProcessor extends BaseResponseProcessor { ...... ...... protected String doAction(WorkContext oCTX) throws Exception { ...... if (xxxx) { this.initToken(oCTX, "Your Action Name"); } ...... }
7. Java YourActionProcessor(YourActionProcessor.java)
public class XXXXProcessor extends BaseProcessor{ ...... ...... protected String doAction(WorkContext oCTX) throws Exception { ..... String action = (String)oCTX.getRequestParameter(ProgressSummaryConstants.ACTION); if(!this.validateToken(oCTX, action)){ return ProgressSummaryConstants.DONE; } ...... }
发表评论
-
HTTPClient
2012-12-21 21:11 0public class RenRen { // The ... -
Export To Excel - Testing
2012-12-18 13:15 0MainTest ..... Map configM ... -
Export To Excel - ExcelUtils.java [Version 0.2]
2012-12-18 13:11 9import java.io.BufferedReader; ... -
Export To Excel - Action Oupt Excel
2012-11-23 13:49 10public String doAction(Work ... -
Export To Excel - ExcelUtils.java
2012-12-17 16:31 3import java.io.BufferedReader; ... -
Export To Excel - ExcelDAO.java
2012-12-18 12:55 5import java.sql.CallableStateme ... -
Export To Excel - commonExcelStyle.css
2012-12-18 12:55 6body { FONT-FAMILY: "Ari ... -
Export To Excel - ExcelConstants.java
2012-12-18 12:55 5/** * <p><b> * ... -
Export To Excel - ExcelRowList.java
2012-12-18 09:55 5import java.util.ArrayList; im ... -
Export To Excel - ExcelRowItem.java
2012-12-17 16:32 7import java.util.ArrayList; im ... -
Export To Excel - ExcelInfo.java
2012-11-23 13:50 8/** * <p><b> * ... -
Export To Excel - ExcelColList.java
2012-11-23 13:50 6import java.util.ArrayList; im ... -
Export To Excel - ExcelColItem.java
2012-11-23 13:50 11Version 0.1 import java.uti ... -
Export To Excel - ExcelCellItem.java
2012-11-23 13:49 7public class ExcelCellItem { ... -
Util
2012-12-17 16:32 690import java.io.BufferedReader; ... -
DMSUtil
2012-12-17 16:31 722import java.io.ByteArrayInputSt ... -
PooledConnectionManager
2012-12-17 16:31 933import java.sql.Connection; im ... -
FloatValidator
2012-10-05 13:42 788public class FloatValidator ext ... -
XmlHelper
2012-08-31 09:33 1282import java.io.ByteArrayInputSt ... -
XMLEncode
2012-08-30 18:43 1060public class XMLEncode implemen ...
相关推荐
Java开发案例-springboot-34-整合Sa-Token实现权限认证-源代码+文档.rar Java开发案例-springboot-34-整合Sa-Token实现权限认证-源代码+文档.rar Java开发案例-springboot-34-整合Sa-Token实现权限认证-源代码+文档....
Java开发案例-springboot-整合Sa-Token-Quick-Login插件实现快速登录认证-源代码+文档.rar Java开发案例-springboot-整合Sa-Token-Quick-Login插件实现快速登录认证-源代码+文档.rar Java开发案例-springboot-整合Sa...
标签:apache、kerby、token、provider、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明...
下面将详细介绍如何在Spring Boot中整合JWT、Shiro和Redis实现Token自动刷新。 JWT是一种轻量级的身份验证机制,它通过在客户端存储一个包含用户信息的令牌,每次请求时都将这个令牌发送到服务器进行验证。JWT由三...
spark3.0.0版本对接kafka数据源需要的jar包,最新的版本导致maven的阿里云仓库不能直接下载下来,所以需要手动导入jar包进行操作,有需要的朋友可以免费下载
Android OkHttp实现全局过期token自动刷新示例 本篇文章主要介绍了Android OkHttp实现全局过期token自动刷新示例,解决了在Android开发中常见的问题,即如何在请求某个接口时自动刷新token。 首先,我们需要了解...
【Java实现无感知刷新Token详解】 在Web应用中,用户身份验证通常依赖于Token机制,如JWT(JSON Web Tokens)。然而,Token具有有效期限制,过期后可能导致用户被迫重新登录,影响用户体验。为了解决这一问题,我们...
3. `callback`: 包含各种回调函数,如`beforeAsync`(异步加载前的回调)、`onAsyncSuccess`(加载成功后的回调)和`onAsyncError`(加载失败的回调)。 例如,一个基本的zTree异步加载配置可能如下所示: ```...
文件列表中的"token"可能包含的是实现这些功能的Java类和配置文件。在实际应用中,这些类可能包括Token解析器、验证器,以及与Spring Security集成的配置类。用户只需将这些文件导入项目并正确配置Maven依赖,即可...
标签:apache、kerby、token、provider、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...
使用这些packages,可以轻松地生成和验证Token,从而实现鉴权和授权。 在Startup.cs文件中,需要将JWTService注入到服务中,以便生成和验证Token。然后,在Controller中,使用JWTService来生成Token,并将其返回给...
本主题将详细讲解如何实现“java后台获取小程序用户信息”、“生成自定义token”以及“使用filter过滤header的token”的核心技术点。 首先,我们要理解小程序与后台交互的基本流程。小程序通常会通过调用微信提供的...
APP使用token和refreshToken实现接口身份认证,保持登录状态
内容概要: ...3、同时多个请求返回401,需要刷新token。 阅读建议:此资源以简单的demo演示了RefreshToken使用的全过程,介绍了基本的思路,所以在学习的过程要结合这些内容一起来实践,并调试对应的代码。
Android Token 过期刷新处理可以通过两种解决方案来实现:第一种解决方案是通过 OkHttp 提供的 Authenticator 接口来实现 Token 的刷新,第二种解决方案是根据与后端协商好的返回码处理刷新 Token 步骤。两种解决...
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
jwt.jar包 jwt所需jar包集合 使用commons-codec.jar + java-jwt.jar进行token认证,支持jdk1.7及以上版本,目前大多数jwt支持至少需要1.8及以上,资源不好找,且行且珍惜。 如果需要源码以及功能实现方式,请联系...
本篇文章将深入探讨名为“token-encoder-main”的源码,揭示其在处理Token编码过程中的核心原理和实现细节。 首先,我们需要理解什么是Token。在Web应用中,Token通常是一种安全凭证,用于证明用户的身份或权限。...
Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展且易于管理的企业级应用程序。在Web开发中,处理用户提交的数据时,防止重复提交是一个常见的需求,特别是对于那些可能会改变系统状态的操作,如添加、...
2. **双重Token机制**:引入了两种类型的Token——access_token和refresh_token,前者用于日常操作的身份验证,后者用于刷新access_token,以应对Token过期的情况。 #### 三、防止Token伪造的技术细节 **1. 服务端...