mirror of
				https://github.com/openimsdk/open-im-server.git
				synced 2025-10-27 05:52:29 +08:00 
			
		
		
		
	feat: optimise jwt token
This commit is contained in:
		
							parent
							
								
									efeba3432c
								
							
						
					
					
						commit
						e23ac21587
					
				
							
								
								
									
										1
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								go.mod
									
									
									
									
									
								
							| @ -32,6 +32,7 @@ require ( | |||||||
| 	github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect | 	github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect | ||||||
| 	github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5 | 	github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5 | ||||||
| 	github.com/sirupsen/logrus v1.6.0 | 	github.com/sirupsen/logrus v1.6.0 | ||||||
|  | 	github.com/stretchr/testify v1.7.0 | ||||||
| 	github.com/tencentyun/qcloud-cos-sts-sdk v0.0.0-20210325043845-84a0811633ca | 	github.com/tencentyun/qcloud-cos-sts-sdk v0.0.0-20210325043845-84a0811633ca | ||||||
| 	github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 // indirect | 	github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 // indirect | ||||||
| 	go.etcd.io/etcd v0.0.0-20200402134248-51bdeb39e698 | 	go.etcd.io/etcd v0.0.0-20200402134248-51bdeb39e698 | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.sum
									
									
									
									
									
								
							| @ -233,6 +233,8 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV | |||||||
| github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= | github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= | ||||||
| github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= | github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= | ||||||
| github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | ||||||
|  | github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= | ||||||
|  | github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | ||||||
| github.com/tencentyun/qcloud-cos-sts-sdk v0.0.0-20210325043845-84a0811633ca h1:G/aIr3WiUesWHL2YGYgEqjM5tCAJ43Ml+0C18wDkWWs= | github.com/tencentyun/qcloud-cos-sts-sdk v0.0.0-20210325043845-84a0811633ca h1:G/aIr3WiUesWHL2YGYgEqjM5tCAJ43Ml+0C18wDkWWs= | ||||||
| github.com/tencentyun/qcloud-cos-sts-sdk v0.0.0-20210325043845-84a0811633ca/go.mod h1:b18KQa4IxHbxeseW1GcZox53d7J0z39VNONTxvvlkXw= | github.com/tencentyun/qcloud-cos-sts-sdk v0.0.0-20210325043845-84a0811633ca/go.mod h1:b18KQa4IxHbxeseW1GcZox53d7J0z39VNONTxvvlkXw= | ||||||
| github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= | github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= | ||||||
|  | |||||||
| @ -4,8 +4,9 @@ import ( | |||||||
| 	"Open_IM/src/common/config" | 	"Open_IM/src/common/config" | ||||||
| 	"Open_IM/src/common/db" | 	"Open_IM/src/common/db" | ||||||
| 	"errors" | 	"errors" | ||||||
| 	"github.com/dgrijalva/jwt-go" |  | ||||||
| 	"time" | 	"time" | ||||||
|  | 
 | ||||||
|  | 	"github.com/dgrijalva/jwt-go" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| var ( | var ( | ||||||
| @ -25,21 +26,16 @@ type Claims struct { | |||||||
| func BuildClaims(uid, accountAddr, platform string, ttl int64) Claims { | func BuildClaims(uid, accountAddr, platform string, ttl int64) Claims { | ||||||
| 	now := time.Now().Unix() | 	now := time.Now().Unix() | ||||||
| 	//if ttl=-1 Permanent token | 	//if ttl=-1 Permanent token | ||||||
| 	if ttl == -1 { | 	expiresAt := int64(-1) | ||||||
| 		return Claims{ | 	if ttl != -1 { | ||||||
| 			UID:      uid, | 		expiresAt = now + ttl | ||||||
| 			Platform: platform, |  | ||||||
| 			StandardClaims: jwt.StandardClaims{ |  | ||||||
| 				ExpiresAt: -1, |  | ||||||
| 				IssuedAt:  now, |  | ||||||
| 				NotBefore: now, |  | ||||||
| 			}} |  | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
| 	return Claims{ | 	return Claims{ | ||||||
| 		UID:      uid, | 		UID:      uid, | ||||||
| 		Platform: platform, | 		Platform: platform, | ||||||
| 		StandardClaims: jwt.StandardClaims{ | 		StandardClaims: jwt.StandardClaims{ | ||||||
| 			ExpiresAt: now + ttl, //Expiration time | 			ExpiresAt: expiresAt, //Expiration time | ||||||
| 			IssuedAt:  now,       //Issuing time | 			IssuedAt:  now,       //Issuing time | ||||||
| 			NotBefore: now,       //Begin Effective time | 			NotBefore: now,       //Begin Effective time | ||||||
| 		}} | 		}} | ||||||
|  | |||||||
							
								
								
									
										32
									
								
								src/utils/jwt_token_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/utils/jwt_token_test.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,32 @@ | |||||||
|  | package utils | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"testing" | ||||||
|  | 	"time" | ||||||
|  | 
 | ||||||
|  | 	"github.com/stretchr/testify/assert" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | func Test_BuildClaims(t *testing.T) { | ||||||
|  | 	uid := "1" | ||||||
|  | 	accountAddr := "accountAddr" | ||||||
|  | 	platform := "PC" | ||||||
|  | 	ttl := int64(-1) | ||||||
|  | 	claim := BuildClaims(uid, accountAddr, platform, ttl) | ||||||
|  | 	now := time.Now().Unix() | ||||||
|  | 
 | ||||||
|  | 	assert.Equal(t, claim.UID, uid, "uid should equal") | ||||||
|  | 	assert.Equal(t, claim.Platform, platform, "platform should equal") | ||||||
|  | 	assert.Equal(t, claim.StandardClaims.ExpiresAt, int64(-1), "StandardClaims.ExpiresAt should be equal") | ||||||
|  | 	// time difference within 1s | ||||||
|  | 	assert.Equal(t, claim.StandardClaims.IssuedAt, now, "StandardClaims.IssuedAt should be equal") | ||||||
|  | 	assert.Equal(t, claim.StandardClaims.NotBefore, now, "StandardClaims.NotBefore should be equal") | ||||||
|  | 
 | ||||||
|  | 	ttl = int64(60) | ||||||
|  | 	now = time.Now().Unix() | ||||||
|  | 	claim = BuildClaims(uid, accountAddr, platform, ttl) | ||||||
|  | 	// time difference within 1s | ||||||
|  | 	assert.Equal(t, claim.StandardClaims.ExpiresAt, int64(60)+now, "StandardClaims.ExpiresAt should be equal") | ||||||
|  | 	assert.Equal(t, claim.StandardClaims.IssuedAt, now, "StandardClaims.IssuedAt should be equal") | ||||||
|  | 	assert.Equal(t, claim.StandardClaims.NotBefore, now, "StandardClaims.NotBefore should be equal") | ||||||
|  | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user