| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package models
- import (
- // "errors"
- // "strconv"
- "time"
- jwt "github.com/dgrijalva/jwt-go"
- )
- const (
- JWT_Secret = "jwt-dashoo-1705"
- JWT_Issuer = "dashoo.cn"
- JWT_Audience = "dashoo"
- JWT_Expires = 24 * 60 * 60 // 24h
- )
- type Claims struct {
- // This will hold a users username after authenticating
- Username string `json:"username"`
- // This will hold claims that are recommended having (Expiration, issuer)
- jwt.StandardClaims
- }
- type User4CreateToken struct {
- Username string `json:"username"`
- Password string `json:"password"`
- }
- // 返回客户端的token信息
- type UserToken struct {
- Token string `json:"token"`
- }
- // 从token中获取的用户信息
- type UserInfo struct {
- Id string
- Username string
- Realname string
- AccCode string
- Roles string
- Power string
- DepartmentId string
- Description string
- IsCompanyUser int
- Superior string
- Uint string
- }
- // 建立JWT Token
- func CreateToken(user string) (UserToken, error) {
- claims := Claims{
- user,
- jwt.StandardClaims{
- NotBefore: int64(time.Now().Unix()),
- ExpiresAt: int64(time.Now().Unix() + JWT_Expires),
- Issuer: JWT_Issuer,
- },
- }
- // Create the token using your claims
- token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
- signedToken, err := token.SignedString([]byte(JWT_Secret))
- userToken := UserToken{Token: signedToken}
- return userToken, err
- }
- // 验证JWT Token
- func CheckToken(signedToken string) (*UserInfo, error) {
- var userinfo UserInfo
- token, err := jwt.ParseWithClaims(signedToken, &Claims{}, func(token *jwt.Token) (interface{}, error) {
- return []byte(JWT_Secret), nil
- })
- if claims, ok := token.Claims.(*Claims); ok && token.Valid {
- //fmt.Printf("%v %v", claims.Username, claims.StandardClaims.ExpiresAt)
- //fmt.Println(reflect.TypeOf(claims.StandardClaims.ExpiresAt))
- userinfo.Username = claims.Username
- return &userinfo, err
- }
- return nil, err
- }
|