router.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package model
  2. import (
  3. "errors"
  4. "github.com/dgrijalva/jwt-go"
  5. "github.com/gin-gonic/gin"
  6. "net/http"
  7. "rocommon/util"
  8. "time"
  9. )
  10. func UserLogin(c *gin.Context) {
  11. userName := c.DefaultQuery("name", "") ///default ""
  12. pass := c.DefaultQuery("pass", "")
  13. if userName != "wtgame" || pass != "wtgame123" {
  14. c.JSON(http.StatusOK, "请输入正确的用户名和密码")
  15. return
  16. }
  17. claims := &jwt.StandardClaims{}
  18. claims.IssuedAt = util.GetTimeSeconds()
  19. claims.ExpiresAt = util.GetCurrentTimeNow().Add(time.Second * time.Duration(3600)).Unix()
  20. signedToken, err := getToken(claims)
  21. if err != nil {
  22. c.String(http.StatusNotFound, err.Error())
  23. return
  24. }
  25. c.Writer.Header().Add("Authorization", signedToken)
  26. c.String(http.StatusOK, signedToken)
  27. }
  28. func getToken(claims *jwt.StandardClaims) (string, error) {
  29. token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
  30. signedToken, err := token.SignedString([]byte("wtgame123"))
  31. if err != nil {
  32. return "", errors.New("token invalid")
  33. }
  34. return signedToken, nil
  35. }
  36. func VerifyAction(tokenStr string) (*jwt.StandardClaims, error) {
  37. token, err := jwt.ParseWithClaims(tokenStr, &jwt.StandardClaims{},
  38. func(token *jwt.Token) (interface{}, error) {
  39. return []byte("wtgame123"), nil
  40. })
  41. if err != nil {
  42. return nil, errors.New("verify error")
  43. }
  44. claims, ok := token.Claims.(*jwt.StandardClaims)
  45. if !ok {
  46. return nil, errors.New("verify relogin")
  47. }
  48. if err := token.Claims.Valid(); err != nil {
  49. return nil, errors.New("verify relogin")
  50. }
  51. return claims, nil
  52. }