添加扫描登录部分uuid与获取状态代码
This commit is contained in:
parent
063856395c
commit
a10830f820
|
|
@ -2,11 +2,10 @@ package dao
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"gorm.io/gorm"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type User struct {
|
type User struct {
|
||||||
gorm.Model
|
ID uint `gorm:"primarykey column:id"`
|
||||||
Name string `gorm:"column:name"`
|
Name string `gorm:"column:name"`
|
||||||
Age int `gorm:"column:age"`
|
Age int `gorm:"column:age"`
|
||||||
Email string `gorm:"column:email"`
|
Email string `gorm:"column:email"`
|
||||||
|
|
|
||||||
1
go.mod
1
go.mod
|
|
@ -24,6 +24,7 @@ require (
|
||||||
github.com/go-playground/validator/v10 v10.20.0 // indirect
|
github.com/go-playground/validator/v10 v10.20.0 // indirect
|
||||||
github.com/go-sql-driver/mysql v1.7.0 // indirect
|
github.com/go-sql-driver/mysql v1.7.0 // indirect
|
||||||
github.com/goccy/go-json v0.10.2 // indirect
|
github.com/goccy/go-json v0.10.2 // indirect
|
||||||
|
github.com/google/uuid v1.6.0 // indirect
|
||||||
github.com/jinzhu/inflection v1.0.0 // indirect
|
github.com/jinzhu/inflection v1.0.0 // indirect
|
||||||
github.com/jinzhu/now v1.1.5 // indirect
|
github.com/jinzhu/now v1.1.5 // indirect
|
||||||
github.com/json-iterator/go v1.1.12 // indirect
|
github.com/json-iterator/go v1.1.12 // indirect
|
||||||
|
|
|
||||||
2
go.sum
2
go.sum
|
|
@ -40,6 +40,8 @@ github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzq
|
||||||
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
|
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
|
||||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||||
|
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||||
|
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
|
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
|
||||||
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
|
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
|
||||||
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
|
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/golang-jwt/jwt"
|
"github.com/golang-jwt/jwt"
|
||||||
|
"github.com/google/uuid"
|
||||||
"time"
|
"time"
|
||||||
"videoplayer/service"
|
"videoplayer/service"
|
||||||
"videoplayer/worker"
|
"videoplayer/worker"
|
||||||
|
|
@ -17,6 +18,9 @@ func SetUpUserGroup(router *gin.Engine) {
|
||||||
userGroup := router.Group("/user")
|
userGroup := router.Group("/user")
|
||||||
userGroup.POST("/register", registerHandler)
|
userGroup.POST("/register", registerHandler)
|
||||||
userGroup.POST("/login", loginHandler)
|
userGroup.POST("/login", loginHandler)
|
||||||
|
userGroup.POST("/uuid", ScanUUID)
|
||||||
|
userGroup.POST("/gqr", GetQRStatus)
|
||||||
|
userGroup.POST("/sqr", SetQRStatus)
|
||||||
}
|
}
|
||||||
|
|
||||||
type RLReq struct {
|
type RLReq struct {
|
||||||
|
|
@ -25,6 +29,56 @@ type RLReq struct {
|
||||||
Password string `json:"password" form:"password"`
|
Password string `json:"password" form:"password"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type QRReq struct {
|
||||||
|
UUID string `json:"uuid" form:"uuid"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func ScanUUID(c *gin.Context) {
|
||||||
|
id := uuid.New()
|
||||||
|
worker.SetRedisWithExpire(id.String(), "0", time.Minute*3)
|
||||||
|
c.JSON(200, gin.H{"code": 0, "message": "success", "data": id.String()})
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetQRStatus(c *gin.Context) {
|
||||||
|
c.JSON(200, gin.H{"code": 0, "message": "success", "data": "1"})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 确认返回token数据
|
||||||
|
func ConfirmQRLogin(c *gin.Context) {
|
||||||
|
c.JSON(200, gin.H{"code": 0, "message": "success", "data": "1"})
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetQRStatus(c *gin.Context) {
|
||||||
|
var qrReq QRReq
|
||||||
|
if err := c.ShouldBind(&qrReq); err == nil {
|
||||||
|
str := worker.GetRedis(qrReq.UUID)
|
||||||
|
switch str {
|
||||||
|
case "0":
|
||||||
|
c.JSON(200, gin.H{"code": 0, "message": "success", "data": "0"}) //空值
|
||||||
|
case "1":
|
||||||
|
c.JSON(200, gin.H{"code": 0, "message": "success", "data": "1"}) //已扫描待确认
|
||||||
|
default:
|
||||||
|
// 解析 JWT 令牌
|
||||||
|
token, err := jwt.Parse(str, func(token *jwt.Token) (interface{}, error) {
|
||||||
|
return signingKey, nil
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(200, gin.H{"error": err.Error(), "code": 1, "message": "error"})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 返回令牌
|
||||||
|
data := make(map[string]interface{})
|
||||||
|
data["id"] = token.Claims.(jwt.MapClaims)["id"]
|
||||||
|
data["username"] = token.Claims.(jwt.MapClaims)["username"]
|
||||||
|
data["email"] = token.Claims.(jwt.MapClaims)["email"]
|
||||||
|
data["token"] = str
|
||||||
|
c.JSON(200, gin.H{"code": 0, "message": "success", "data": data}) //确认返回token数据
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
c.JSON(200, gin.H{"error": err.Error(), "code": 1, "message": "error"})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func loginHandler(c *gin.Context) {
|
func loginHandler(c *gin.Context) {
|
||||||
var req_data RLReq
|
var req_data RLReq
|
||||||
tokenString := ""
|
tokenString := ""
|
||||||
|
|
|
||||||
2
main.go
2
main.go
|
|
@ -37,7 +37,7 @@ func JWTAuthMiddleware() gin.HandlerFunc {
|
||||||
}
|
}
|
||||||
|
|
||||||
//如果请求为login或register,则不需要验证token
|
//如果请求为login或register,则不需要验证token
|
||||||
if strings.Contains(c.Request.URL.Path, "/login") || strings.Contains(c.Request.URL.Path, "/register") {
|
if strings.Contains(c.Request.URL.Path, "/login") || strings.Contains(c.Request.URL.Path, "/register") || strings.Contains(c.Request.URL.Path, "/uuid") || strings.Contains(c.Request.URL.Path, "/gqr") || strings.Contains(c.Request.URL.Path, "/uuid") {
|
||||||
c.Next()
|
c.Next()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -69,6 +69,9 @@ func SetHash(key string, id int, name, email string) {
|
||||||
|
|
||||||
// 设置哈希表的字段值, 0 表示不设置过期时间, 如果需要设置过期时间, 可以设置为 time.Second * 10 等
|
// 设置哈希表的字段值, 0 表示不设置过期时间, 如果需要设置过期时间, 可以设置为 time.Second * 10 等
|
||||||
err := redisClient.HSet(ctx, key, fields).Err()
|
err := redisClient.HSet(ctx, key, fields).Err()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Error setting key: %v", err)
|
||||||
|
}
|
||||||
err = redisClient.Expire(ctx, key, time.Hour*10).Err()
|
err = redisClient.Expire(ctx, key, time.Hour*10).Err()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Error setting key: %v", err)
|
log.Fatalf("Error setting key: %v", err)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue