Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b5374b85ff | ||
|
|
5172824358 |
@@ -17,14 +17,14 @@ var (
|
||||
|
||||
type service struct{}
|
||||
|
||||
func (s *service) Register(cli *clientv3.Client, serviceName string, port int) error {
|
||||
func (s *service) Register(cli *clientv3.Client, serviceName string, port string) error {
|
||||
lease := clientv3.NewLease(cli)
|
||||
grantResp, err := lease.Grant(context.TODO(), 5)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
serviceAddr := utils.GetLocationIP() + ":" + utils.Int2String(port)
|
||||
serviceAddr := utils.GetLocationIP() + ":" + port
|
||||
|
||||
key := RootPrefix + serviceName + "/" + utils.Int642String(time.Now().UnixNano())
|
||||
_, err = cli.KV.Put(context.TODO(), key, serviceAddr, clientv3.WithLease(grantResp.ID))
|
||||
|
||||
@@ -1,14 +1,19 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
|
||||
"git.apinb.com/bsm-sdk/core/cache/redis"
|
||||
"git.apinb.com/bsm-sdk/core/crypto/encipher"
|
||||
"git.apinb.com/bsm-sdk/core/errcode"
|
||||
"git.apinb.com/bsm-sdk/core/types"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func JwtAuth(redisToken string) gin.HandlerFunc {
|
||||
func JwtAuth(redis *redis.RedisClient) gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
// 从请求头中获取 Authorization
|
||||
authHeader := c.GetHeader("Authorization")
|
||||
@@ -28,7 +33,9 @@ func JwtAuth(redisToken string) gin.HandlerFunc {
|
||||
}
|
||||
|
||||
// 从redis 获取token,判断当前redis 是否为空
|
||||
if redisToken == "" {
|
||||
tokenKey := fmt.Sprintf("%d-%s-%s", claims.ID, claims.Role, "token")
|
||||
redisToken := redis.Client.Get(redis.Ctx, tokenKey)
|
||||
if redisToken.Val() == "" {
|
||||
log.Println("redis异常", "Token status unauthorized")
|
||||
c.JSON(http.StatusUnauthorized, gin.H{"error": "Token status unauthorized"})
|
||||
c.Abort()
|
||||
@@ -41,3 +48,26 @@ func JwtAuth(redisToken string) gin.HandlerFunc {
|
||||
c.Next()
|
||||
}
|
||||
}
|
||||
|
||||
// 获取上下文用户登录信息
|
||||
func ParseAuth(c *gin.Context) (*types.JwtClaims, error) {
|
||||
claims, ok := c.Get("Auth")
|
||||
if !ok {
|
||||
log.Printf("获取登录信息异常: %v", errcode.ErrJWTAuthNotFound)
|
||||
return nil, errcode.ErrJWTAuthNotFound
|
||||
}
|
||||
|
||||
json_claims, err := json.Marshal(claims)
|
||||
if err != nil {
|
||||
log.Printf("解析json异常: %v", err)
|
||||
return nil, errcode.ErrJsonMarshal
|
||||
}
|
||||
|
||||
var auth *types.JwtClaims
|
||||
if err := json.Unmarshal(json_claims, &auth); err != nil {
|
||||
log.Printf("解析json异常: %v", err)
|
||||
return nil, errcode.ErrJsonUnmarshal
|
||||
}
|
||||
|
||||
return auth, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user