Hessian Token权限认证

简介:   博客分类: Hessian   添加Token验证,如何生成Token,计算方式如下,采用不可逆转的方式生成[MD5加密]: 服务器端存储Token,采用线程安全的Map 客户端在发送业务请求前,先去服务器端申请一个Token,然后发送请求时把token和业务类一起发送,这时...

 

博客分类:
 
添加Token验证,如何生成Token,计算方式如下,采用不可逆转的方式生成[MD5加密]: 
服务器端存储Token,采用线程安全的Map 
客户端在发送业务请求前,先去服务器端申请一个Token,然后发送请求时把token和业务类一起发送,这时会发送请求超时和权限验证,因为Token只有一次有效,废话不说,代码如下: 
Token接口: 
Java代码   收藏代码
  1. public interface TokenGenerator {  
  2.   
  3.     public String generatorToken(String userName);  
  4.       
  5.     public boolean validateToken(String token);   
  6. }  

Token实现类: 
Java代码   收藏代码
  1. public class TokenGeneratorImpl implements TokenGenerator {  
  2.    
  3.     Map<String, Date> tokenStore = new ConcurrentHashMap<String, Date>();  
  4.       
  5.     /** 
  6.      * 客户端发送请求得到token. 
  7.      * @param userName 
  8.      * @return 
  9.      */  
  10.     public String generatorToken(String userName){  
  11.         Date time = new Date();  
  12.         try {  
  13.             byte[] b =  (time + DigestUtils.md5Hex(userName)).getBytes("utf-8");  
  14.             String token = DigestUtils.md5Hex(b);   
  15.             tokenStore.put(token,time);//存储这个时间点的token  
  16.             return token;  
  17.         } catch (UnsupportedEncodingException e) {  
  18.             // TODO Auto-generated catch block  
  19.             e.printStackTrace();  
  20.         }  
  21.         return userName;  
  22.     }  
  23.       
  24.     /** 
  25.      * 服务器在接收到请求时验证token,并把刚才的Token设置为失效 
  26.      * @param token 
  27.      * @return 
  28.      */  
  29.     public boolean validateToken(String token){  
  30.         if(tokenStore.containsKey(token)){  
  31.             Date time= tokenStore.get(token);  
  32.             Date normal = new Date();  
  33.             if(normal.getTime() - time.getTime() > 100*1000){  
  34.                 //日志进退时  
  35.                 return false;  
  36.             }  
  37.             tokenStore.remove(token);  
  38.         }else{  
  39.             //日志,没有权限  
  40.             return false;  
  41.         }  
  42.         return true;  
  43.     }  

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


客户端调用: 
Java代码   收藏代码
  1. String token = tokenGenerator.generatorToken("ycl");  
  2.   
  3.             Hello hello = (Hello) context.getBean("helloServiceClient");  
  4.             //Spring2.5和hessian3.1果然可以结合.  
  5.               
  6.             hello.setToken(token);  
  7.             //添加Token参数  
  8.   
  9.             System.out.println(hello.hello());  

这里测试很简单,你可以设置一个Token,然后调用,可以得到正确的数据,如果没有设置Token则返回没有权限,如果等待一分钟调用,则返回服务超时[程序未加提示,自己编写]. 
这里的Token你可以试着调用两次试试,只有一次会成功.因为调用完一次后就已经失效了. 
这个代码还未进行优化,只是按照自己的构想实现了一把,嘿嘿
目录
相关文章
|
敏捷开发 弹性计算 中间件
平台即服务(PaaS):简化开发与部署的新篇章
【6月更文挑战第21天】PaaS简化了应用开发与部署,提供资源池化、自动化管理及丰富的开发工具,助力企业降低成本、提高效率和系统稳定性。它支持敏捷开发、加速产品上市,改善用户体验,并推动创新,成为现代软件开发的关键。
1049 2
|
Java UED 开发者
Spring Boot 降级功能的神秘面纱:Hystrix 与 Resilience4j 究竟藏着怎样的秘密?
【8月更文挑战第29天】在分布式系统中,服务稳定性至关重要。为应对故障,Spring Boot 提供了 Hystrix 和 Resilience4j 两种降级工具。Hystrix 作为 Netflix 的容错框架,通过隔离依赖、控制并发及降级机制增强系统稳定性;Resilience4j 则是一个轻量级库,提供丰富的降级策略。两者均可有效提升系统可靠性,具体选择取决于需求与场景。在面对服务故障时,合理运用这些工具能确保系统基本功能正常运作,优化用户体验。以上简介包括了两个工具的简单示例代码,帮助开发者更好地理解和应用。
366 0
|
9月前
|
存储 人工智能 算法
解锁分布式文件分享的 Java 一致性哈希算法密码
在数字化时代,文件分享成为信息传播与协同办公的关键环节。本文深入探讨基于Java的一致性哈希算法,该算法通过引入虚拟节点和环形哈希空间,解决了传统哈希算法在分布式存储中的“哈希雪崩”问题,确保文件分配稳定高效。文章还展示了Java实现代码,并展望了其在未来文件分享技术中的应用前景,如结合AI优化节点布局和区块链增强数据安全。
|
11月前
|
关系型数据库 MySQL OLAP
快速入门:搭建你的第一个AnalyticDB实例
【10月更文挑战第25天】在大数据时代,高效的在线分析处理(OLAP)成为企业决策的关键。AnalyticDB是阿里云推出的一款完全托管的实时数据仓库服务,它能够支持PB级的数据量和高并发的查询需求。作为一名数据工程师,我有幸在工作中使用了AnalyticDB,并积累了丰富的实践经验。本文将从个人角度出发,详细介绍如何快速搭建你的第一个AnalyticDB实例,包括创建实例、连接数据库、导入数据和执行简单查询等步骤。
459 0
|
存储 监控 算法
(六)JVM成神路之GC基础篇:对象存活判定算法、GC算法、STW、GC种类详解
经过前面五个章节的分析后,对于JVM的大部分子系统都已阐述完毕,在本文中则开始对JVM的GC子系统进行全面阐述,GC机制也是JVM的重中之重,调优、监控、面试都逃不开的JVM话题。
638 8
|
网络安全 Nacos
Nacos客户端配置错误检查
Nacos客户端配置错误检查
622 3
|
Ubuntu Python
ubuntu升级Python版本
现在,你已成功升级了Python版本并可以使用新版本进行开发和运行程序。
1000 1
|
JavaScript 前端开发 开发者
jQuery中的ready()函数:优雅地处理页面加载事件
jQuery中的ready()函数:优雅地处理页面加载事件
343 0
|
Kubernetes Cloud Native 关系型数据库
Kubernetes Crossplane VCluster 构建新集群
Kubernetes Crossplane VCluster 构建新集群
473 1
|
Docker 容器
docker 离线镜像导入
前言:之前做了一个医院的项目,一般医院使用的服务器都是内网环境,所以自己整合了一下Docker离线部署的方法分享给大家。
793 0