jwt.go 708 B

12345678910111213141516171819202122232425262728293031
  1. package main
  2. import (
  3. "time"
  4. "github.com/dgrijalva/jwt-go"
  5. )
  6. const JWT_SECRET = "abcd1234asdfqwer!@#!@#53.abcd1234asdfqwer!@#!@#53."
  7. // type customClaims struct {
  8. // Uid string `json:"uid"`
  9. // jwt.StandardClaims
  10. // }
  11. func createToken(uid int) (string, error) {
  12. at := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
  13. "uid": uid,
  14. "exp": time.Now().Add(time.Hour * 24).Unix(),
  15. })
  16. return at.SignedString([]byte(JWT_SECRET))
  17. }
  18. func parseToken(token string) (int, error) {
  19. claim, err := jwt.Parse(token, func(token *jwt.Token) (interface{}, error) {
  20. return []byte(JWT_SECRET), nil
  21. })
  22. if err != nil {
  23. return 0, err
  24. }
  25. return int(claim.Claims.(jwt.MapClaims)["uid"].(float64)), nil
  26. }