1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package middleware
- import (
- "github.com/golang-jwt/jwt"
- "iot_manager_service/app/system/model"
- "iot_manager_service/config"
- "time"
- )
- const (
- Authorization = "Authorization"
- )
- var EmptyKeyFunc = func(t *jwt.Token) (interface{}, error) { return []byte(config.Instance().Server.TokenSign), nil }
- type JwtToken struct {
- jwt.StandardClaims
- TenantId string `json:"tenant_id"`
- UserId int64 `json:"user_id"`
- RoleId int64 `json:"role_id"`
- UserName string `json:"user_name"`
- NickName string `json:"nick_name"`
- Random string `json:"random"`
- }
- func GetAccessToken(userId, roleId int64, tenantId, userName string, random string) (string, error) {
- jwtToken := JwtToken{StandardClaims: jwt.StandardClaims{
- Audience: model.Audience,
- Issuer: model.Issuer,
- ExpiresAt: time.Now().Add(2 * time.Hour).Unix(),
- NotBefore: time.Now().Unix(),
- },
- UserId: userId,
- TenantId: tenantId,
- RoleId: roleId,
- UserName: userName,
- Random: random,
- }
- claims := jwt.NewWithClaims(jwt.SigningMethodHS512, jwtToken)
- return claims.SignedString([]byte(config.Instance().Server.TokenSign))
- }
- func parseAccessToken(authorization string) *JwtToken {
- token, err := jwt.ParseWithClaims(authorization, &JwtToken{}, EmptyKeyFunc)
- if err != nil {
- return nil
- }
- return token.Claims.(*JwtToken)
- }
|