1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- package claims
- import (
- "errors"
- "github.com/dgrijalva/jwt-go"
- "time"
- )
- type MyClaims struct {
- Id int `json:"id"`
- Username string `json:"username"`
- Sid string `json:"sid"`
- Role []string `json:"role"`
- jwt.StandardClaims
- }
- const TokenExpireDuration = time.Hour * 24
- var MySecret = []byte("fasdge[wkejk@$gagli")
- func GenToken(id int, username, sid string, roleName []string) (string, error) {
-
- c := MyClaims{
- Id: id,
- Username: username,
- Sid: sid,
- Role: roleName,
- StandardClaims: jwt.StandardClaims{
- ExpiresAt: time.Now().Add(TokenExpireDuration).Unix(),
- Issuer: "my-project",
- },
- }
-
- token := jwt.NewWithClaims(jwt.SigningMethodHS256, c)
-
- return token.SignedString(MySecret)
- }
- func ParseToken(tokenString string) (*MyClaims, error) {
-
- token, err := jwt.ParseWithClaims(tokenString, &MyClaims{}, func(token *jwt.Token) (i interface{}, err error) {
- return MySecret, nil
- })
- if err != nil {
- return nil, err
- }
- if claims, ok := token.Claims.(*MyClaims); ok && token.Valid {
- return claims, nil
- }
- return nil, errors.New("invalid token")
- }
|