CheckLogin 校验JWT
()
| 20 | |
| 21 | // CheckLogin 校验JWT |
| 22 | func (m *JWTMiddleware) CheckLogin() gin.HandlerFunc { |
| 23 | return func(ctx *gin.Context) { |
| 24 | tokenStr := m.ExtractToken(ctx) |
| 25 | if tokenStr == "" { |
| 26 | return |
| 27 | } |
| 28 | |
| 29 | var uc ijwt.UserClaims |
| 30 | token, err := jwt.ParseWithClaims(tokenStr, &uc, func(token *jwt.Token) (interface{}, error) { |
| 31 | return []byte(viper.GetString("jwt.auth_key")), nil |
| 32 | }) |
| 33 | if err != nil { |
| 34 | apiresponse.UnauthorizedErrorWithDetails(ctx, nil, "登录态无效") |
| 35 | ctx.Abort() |
| 36 | return |
| 37 | } |
| 38 | if token == nil || !token.Valid { |
| 39 | apiresponse.UnauthorizedErrorWithDetails(ctx, nil, "登录态无效") |
| 40 | ctx.Abort() |
| 41 | return |
| 42 | } |
| 43 | if uc.UserAgent == "" { |
| 44 | apiresponse.UnauthorizedErrorWithDetails(ctx, nil, "登录态无效") |
| 45 | ctx.Abort() |
| 46 | return |
| 47 | } |
| 48 | err = m.CheckSession(ctx, uc.Ssid) |
| 49 | if err != nil { |
| 50 | apiresponse.UnauthorizedErrorWithDetails(ctx, nil, "登录态已失效") |
| 51 | ctx.Abort() |
| 52 | return |
| 53 | } |
| 54 | ctx.Set("user", uc) |
| 55 | } |
| 56 | } |
no test coverage detected