/
jwt.go
55 lines (47 loc) · 1.18 KB
/
jwt.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package dsg
import (
"github.com/kataras/iris/v12"
"github.com/xgpc/dsg/v2/exce"
"github.com/xgpc/dsg/v2/pkg/jwt"
"time"
)
// jwt
var _jetKey []byte
func OptionJwt(JwtKey string) func() error {
return func() error {
_jetKey = []byte(JwtKey)
return nil
}
}
// Login 中间件 login
func Login(ctx iris.Context) {
MiddlewareJwt(ctx)
}
// MiddlewareJwt 中间件 login
func MiddlewareJwt(ctx iris.Context) {
p := NewBase(ctx)
token := ctx.GetHeader("token")
parseToken, err := jwt.ParseToken(_jetKey, token)
if err != nil {
exce.ThrowSys(exce.CodeUserTokenError, "解析token失败"+err.Error())
}
p.SetMyId(parseToken.UserID)
p.ctx.Next()
}
// CreateToken 创建Token
func CreateToken(UserID uint32, ExpiresAt time.Duration) string {
ExpiresNum := time.Now().Add(ExpiresAt).Unix()
token, err := jwt.MakeToken(_jetKey, UserID, ExpiresNum)
if err != nil {
exce.ThrowSys(exce.CodeSysBusy, "创建token失败,"+err.Error())
}
return token
}
// ParseToken 解析Token
func ParseToken(token string) *jwt.MapClaims {
parseToken, err := jwt.ParseToken(_jetKey, token)
if err != nil {
exce.ThrowSys(exce.CodeRequestError, "解析token失败"+err.Error())
}
return parseToken
}