`

Hessian Token权限认证

 
阅读更多
添加Token验证,如何生成Token,计算方式如下,采用不可逆转的方式生成[MD5加密]:
服务器端存储Token,采用线程安全的Map
客户端在发送业务请求前,先去服务器端申请一个Token,然后发送请求时把token和业务类一起发送,这时会发送请求超时和权限验证,因为Token只有一次有效,废话不说,代码如下:
Token接口:
public interface TokenGenerator {

	public String generatorToken(String userName);
	
	public boolean validateToken(String token); 
}


Token实现类:
public class TokenGeneratorImpl implements TokenGenerator {
 
	Map<String, Date> tokenStore = new ConcurrentHashMap<String, Date>();
	
	/**
	 * 客户端发送请求得到token.
	 * @param userName
	 * @return
	 */
	public String generatorToken(String userName){
		Date time = new Date();
		try {
			byte[] b =  (time + DigestUtils.md5Hex(userName)).getBytes("utf-8");
			String token = DigestUtils.md5Hex(b); 
			tokenStore.put(token,time);//存储这个时间点的token
			return token;
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return userName;
	}
	
	/**
	 * 服务器在接收到请求时验证token,并把刚才的Token设置为失效
	 * @param token
	 * @return
	 */
	public boolean validateToken(String token){
		if(tokenStore.containsKey(token)){
			Date time= tokenStore.get(token);
			Date normal = new Date();
			if(normal.getTime() - time.getTime() > 100*1000){
				//日志进退时
				return false;
			}
			tokenStore.remove(token);
		}else{
			//日志,没有权限
			return false;
		}
		return true;
	}


服务器端权限判断:
public String hello() { 
		//Hessian的服务之间怎么交互,比如我这个服务要用到其他的服务
			if(tokenGenerator.validateToken(token)){
				return "hello "  + "欢迎学习Hessian";  
			}else{
				return "你没有权限访问!";
			}
			
	}



客户端调用:
String token = tokenGenerator.generatorToken("ycl");

			Hello hello = (Hello) context.getBean("helloServiceClient");
			//Spring2.5和hessian3.1果然可以结合.
			
			hello.setToken(token);
			//添加Token参数

			System.out.println(hello.hello());


这里测试很简单,你可以设置一个Token,然后调用,可以得到正确的数据,如果没有设置Token则返回没有权限,如果等待一分钟调用,则返回服务超时[程序未加提示,自己编写].
这里的Token你可以试着调用两次试试,只有一次会成功.因为调用完一次后就已经失效了.
这个代码还未进行优化,只是按照自己的构想实现了一把,嘿嘿
分享到:
评论
3 楼 u148 2014-09-11  
今天终于解决我了一个很大的疑惑, Token只有一次有效, 多谢.
2 楼 a123159521 2014-01-13  
soltex 写道
你好,那每次验证token,他的失效时间是否更新呢 ?
在实际生产环境中,怎么操作呢。。


我这里没有做过多的说明, 如何使用忍者见忍。

this is just a method to validate token.
1 楼 soltex 2014-01-13  
你好,那每次验证token,他的失效时间是否更新呢 ?
在实际生产环境中,怎么操作呢。。

相关推荐

    hessian 使用实例

    1. **认证与授权**:为了防止未授权的访问,需要在服务端设置合适的认证机制。 2. **数据加密**:传输的数据如果不进行加密,可能会被截获,因此在敏感数据传输时应启用SSL/TLS。 3. **版本控制**:随着服务的升级,...

    Hessian

    **Hessian:深入理解与应用** Hessian是一种二进制Web服务协议,它由Caucho Technology公司开发,主要用于提供轻量级、高效的远程方法调用(Remote Method Invocation,RMI)服务。Hessian的目标是简化分布式系统...

    Hessian 使用小结

    Hessian的设计目标是为了提供高效、简单的远程调用方式,使得客户端能够像调用本地方法一样调用远程服务。 **独立使用Hessian** 在不依赖任何框架的情况下,使用Hessian的步骤如下: 1. **添加依赖**:首先,...

    hessian案例,hessian案例

    Hessian是一种高效的二进制序列化协议,常用于实现轻量级的远程过程调用(RPC)。这个案例涉及到了Hessian在Java和Python之间的跨语言通信。以下是对Hessian技术及其应用的详细解释: 1. **Hessian简介**:Hessian...

    Hessian多个版本打包下载

    这个压缩包包含了Hessian的多个版本,分别是Hessian3.1.6、Hessian3.2.1以及Hessian4.0.7。每个版本都有其特定的功能改进和优化,了解这些版本的区别和适用场景对于开发者来说至关重要。 Hessian3.1.6是Hessian的一...

    hessian

    Hessian是一种二进制Web服务协议,由Caucho Technology公司开发,主要用于提供轻量级、高效的远程方法调用(Remote Method Invocation, RMI)机制。它结合了HTTP协议的可扩展性和Java序列化机制的易用性,使得在...

    Hessian应用

    《Hessian应用详解》 Hessian,一种轻量级的二进制协议,因其高效、简单的特点,在分布式服务中被广泛应用。它允许开发者在HTTP上透明地调用远程方法,就像是本地方法调用一样,极大地提高了开发效率和系统性能。...

    多尺度hessian滤波器图像增强

    在图像处理领域,多尺度Hessian滤波器是一种高级的图像增强技术,它主要用于检测图像中的线性结构,特别是对于微弱或者噪声较大的图像特征有很好的识别能力。这个技术是基于数学形态学的Hessian矩阵理论,由V.S. ...

    基于Hessian矩阵增强的心血管分割_hessian_hessian血管_hessian血管分割_血管分割_Hessian矩阵

    在IT领域,尤其是在医学图像分析中,Hessian矩阵是一个重要的数学工具,用于图像特征检测,特别是在血管分割的应用中。本文将深入探讨标题和描述中提到的"基于Hessian矩阵增强的心血管分割"这一主题。 Hessian矩阵...

    dubbo-hessian协议http请求demo(java)

    - 在实际开发中,我们可能会需要编写一些辅助工具类来处理Hessian的相关操作,例如Hessian2Input和Hessian2Output,它们用于读写Hessian序列化的二进制流。 6. **安全性与优化**: - 虽然Hessian协议效率高,但其...

    hessianServer

    在IT行业中,Hessian是一种基于二进制协议的RPC(远程过程调用)框架,它使得客户端和服务端之间能够高效地进行数据交换。HessianServer指的是实现Hessian协议的服务端程序,通常用于构建分布式系统,使得不同的应用...

    springMVC hessian

    SpringMVC 和 Hessian 是两种在 Java 开发中常见的技术,它们在构建分布式系统时扮演着重要角色。SpringMVC 是 Spring 框架的一部分,主要用于构建 Web 应用的 MVC(模型-视图-控制器)架构。而 Hessian 是一种轻量...

    Hessian的Spring配置

    在Spring框架中,Hessian是一种轻量级的远程方法调用(RPC)协议,它能够实现Java对象到字节流的序列化,从而使得服务端的对象可以在客户端直接调用,仿佛对象就在本地一样。Hessian提供了高效的二进制RPC协议,使得...

    hessian服务端 客户端 可运行

    在这个“hessian服务端 客户端 可运行”的压缩包文件中,很可能包含了一个完整的示例,让我们来详细探讨Hessian在服务端和客户端的实现及其重要性。 首先,我们来理解一下Hessian服务端。在Java中,Hessian服务端...

    Hessian协议格式

    Hessian 协议格式 Hessian 协议是一种轻量级的 remoting on http 工具,使用简单的方法提供了 RMI 的功能。采用的是二进制 RPC 协议,所以它很适合于发送二进制数据。Hessian 主要用作面向对象的消息通信。 ...

    Hessian学习简单demo

    Hessian是一种二进制协议,它被设计用于提高远程调用的效率,特别是在Java和C++之间进行跨语言通信时。Hessian的目标是提供一种快速、简洁的数据序列化和远程方法调用(RPC)机制。在这个简单的demo中,我们将探讨...

    Spring中集成Hessian的问题

    在Spring框架中集成Hessian是为了实现远程方法调用(Remote Method Invocation, RMI),这是一种轻量级的序列化协议,可以高效地传输Java对象。Hessian使得服务提供者和服务消费者之间能够通过网络进行快速的数据...

    hessian vc实现

    - 创建Hessian连接,通常涉及指定服务器地址和端口,可能还需要设置认证信息。 - 使用Hessian的编码和解码API,将你的C++对象转换为Hessian字节流,或者将接收到的Hessian字节流还原为C++对象。 3. **实现RPC调用...

    hessian-4.0.63-API文档-中英对照版.zip

    赠送jar包:hessian-4.0.63.jar; 赠送原API文档:hessian-4.0.63-javadoc.jar; 赠送源代码:hessian-4.0.63-sources.jar; 赠送Maven依赖信息文件:hessian-4.0.63.pom; 包含翻译后的API文档:hessian-4.0.63-...

    Hessian异步请求访问包

    在IT行业中,尤其是在移动开发领域,Hessian是一种广泛使用的二进制协议,它允许远程对象调用(Remote Object Invocation)。本知识点主要关注的是在Android平台上,如何使用Hessian进行异步请求访问,以便提高应用...

Global site tag (gtag.js) - Google Analytics