Jwt

webapp用户身份认证方案 JSON WEB TOKEN 实现Deme示例,Java版
Alternatives To Jwt
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Jwt7,0606,8175354 days ago53February 25, 20237bsd-3-clausePHP
A simple library to work with JSON Web Token and JSON Web Signature
Pyjwt4,6929,4432,1929 days ago48July 18, 202318mitPython
JSON Web Token implementation in Python
Jsmn3,265
4 months ago89mitC
Jsmn is a world fastest JSON parser/tokenizer. This is the official repo replacing the old one at Bitbucket
Node Jwt Simple1,3207,8286462 years ago13March 30, 201933mitJavaScript
JWT(JSON Web Token) encode and decode module for node.js
Vault Ui1,29915 years ago3October 04, 201750otherJavaScript
Vault-UI — A beautiful UI to manage your Vault, written in React
Frangipanni1,190
3 months ago6April 10, 20217mitGo
Program to convert lines of text into a tree structure.
Token Lists1,1623875 days ago33July 05, 2023185mitTypeScript
📚 The Token Lists specification
Spring Boot Jwt1,022
2 years agomitJava
JWT auth service using Spring Boot, Spring Security and MySQL
Jwt844
6 years agomitJava
webapp用户身份认证方案 JSON WEB TOKEN 实现Deme示例,Java版
Jwt Cpp666
a month ago5June 22, 202238mitC++
A header only library for creating and validating json web tokens in c++
Alternatives To Jwt
Select To Compare


Alternative Project Comparisons
Readme

JWT

项目介绍

预备知识(可能需要科学上网)

流程图

image

目录结构

.
├── README.md
├── src
|    └── com
|        |── filter
|        |   └── Filter0_CrossOriginResource.java (跨域过滤器)
|		 |	 └── Filter1_CheckToken.java	(token校验过滤器)
|        ├── jwt
|        │   └── Jwt.java
|        │   └── JwtTestCase.java (测试用例)
|        │   └── TokenState.java  (token状态枚举)
|        |
|        └── servlet
|            └── AuthorServlet.java
├── WebRoot
|   |── WEB-INFO
|   |── index.jsp
|	|── login.html
|	|── main.html
|   └── jquery-2.1.0.js

由于使用了servlet3.0语法,运行环境要求JDK7以及以上,Tomcat7以及以上( 根目录下附带降级版本,支持jdk1.6,tomcat6 ,暂不可用,有空再更新)

本项目依赖于下面jar包:

  • nimbus-jose-jwt-4.13.1.jar (一款开源的成熟的JSON WEB TOKEN 解决方法,本仓库的代码是对其的进一步封装)
  • json-smart-2.0-RC2.jar和asm-1.0-RC1.jar (依赖jar包,主要用于JSONObject序列化)
  • cors-filter-2.2.1.jar和java-property-utils-1.9.1.jar(用于处理跨域ajax请求)
  • junit.jar(单元测试相关jar包)

核心类Jwt.java结构:

2个静态方法createToken和validToken,分别用于生成TOKEN和校验TOKEN; 定义了枚举TokenState,用于表示验证token时的结果,用户可根据结果进行不同处理:

  • EXPIRED token过期
  • INVALID token无效(包括token不合法,token格式不对,校验时异常)
  • VALID token有效

使用示例

获取token

Map<String , Object> payload=new HashMap<String, Object>();
Date date=new Date();
payload.put("uid", "291969452");//用户id
payload.put("iat", date.getTime());//生成时间
payload.put("ext",date.getTime()+1000*60*60);//过期时间1小时
String token=Jwt.createToken(payload);
System.out.println("token:"+token);

校验token


String token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiIyOTE5Njk0NTIiLCJpYXQiOjE0NjA0MzE4ODk2OTgsImV4dCI6MTQ2MDQzNTQ4OTY5OH0.RAa71BnklRMPyPhYBbxsfJdtXBnXeWevxcXLlwC2PrY";
Map<String, Object> result=Jwt.validToken(token);

String state=(String)result.get("state");
switch (TokenState.getTokenState(state)) {
case VALID:
	//To do somethings
	System.out.println("有效token");
	break;
case EXPIRED:
	System.out.println("过期token");
	break;
case INVALID:
	System.out.println("无效的token");
	break;
}

System.out.println("返回结果数据是:" +result.toString());
	


一些坑

跨域过滤器一定要比其他过滤器先执行,不然会有些问题:在web.xml文件中,过滤器的执行顺序是按照在web.xml中从上到下书写的顺序来执行的;在servlet3.0注解中,filter执行顺序是按照文件名自然排序来决定执行顺序的,比如名字叫A的filter就比B先执行

Popular Token Projects
Popular Json Projects
Popular Security Categories

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Java
Json
Token
Jwt
Tomcat
Cors
Jose