package handler import ( "strconv" "time" "github.com/dgrijalva/jwt-go" "github.com/gin-gonic/gin" log "github.com/sirupsen/logrus" "gorm.io/gorm" "myschools.me/wyh/token.git/config" "myschools.me/wyh/token.git/model" "myschools.me/wyh/token.git/mysql" ) // 获取当前用户 func userCurrent(c *gin.Context) *model.UserClaims { obj, ok := c.Get("user") if !ok { return nil } return obj.(*model.UserClaims) } func UserToken(c *gin.Context) { up := &model.User{} if err := c.ShouldBind(up); err != nil { log.WithFields(log.Fields{ "func": "UserToken", }).Warnf("%s", err) } db := mysql.New() var result = &model.User{} if err := db.Where("uname=? and password=?", up.Uname, up.Password).First(result).Error; err != nil { if err != gorm.ErrRecordNotFound { log.WithFields(log.Fields{ "func": "UserToken", }).Warnf("%s", err) } } if result.Uid == 0 { c.AbortWithStatusJSON(400, gin.H{ "code": 1, "msg": "用户账号密码错误", "data": "", }) return } expire := 300 var claims = &model.UserClaims{ StandardClaims: jwt.StandardClaims{ ExpiresAt: time.Now().Add(time.Second * time.Duration(expire)).Unix(), Id: strconv.Itoa(result.Uid), }, User: *up, } token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) tokenString, err := token.SignedString([]byte(config.JwtKey)) if err != nil { log.WithFields(log.Fields{ "func": "UserToken", }).Warnf("%s", err) } c.JSON(200, gin.H{ "token": tokenString, "expire": expire, }) } func UserDetail(c *gin.Context) { usr := userCurrent(c) c.JSON(200, usr) }