85 lines
2.0 KiB
Go
85 lines
2.0 KiB
Go
package gin
|
||
|
||
import (
|
||
"encoding/json"
|
||
|
||
"github.com/gin-gonic/gin"
|
||
"myschools.me/yyjishu/yy-base/redis"
|
||
)
|
||
|
||
//从redis中认证用户
|
||
func AuthUser() gin.HandlerFunc {
|
||
return func(c *gin.Context) {
|
||
token := c.GetHeader("Authorization")
|
||
claims := cacheGet(&token)
|
||
if claims == nil {
|
||
c.Abort()
|
||
return
|
||
}
|
||
c.Set("user", claims)
|
||
c.Next()
|
||
}
|
||
}
|
||
|
||
//从redis中获取用户信息,最佳实践经验建议把此代码放service层
|
||
func cacheGet(token *string) interface{} {
|
||
var user interface{}
|
||
b, err := redis.GetBytes(token)
|
||
if err != nil {
|
||
return nil
|
||
}
|
||
if err := json.Unmarshal(*b, &user); err != nil {
|
||
return nil
|
||
}
|
||
return &user
|
||
}
|
||
|
||
// gin拦截,基于微服务的拦截
|
||
// func AuthUserBS() gin.HandlerFunc {
|
||
// return func(c *gin.Context) {
|
||
// token := c.GetHeader("Authorization")
|
||
// claims := userAuthWithGrpc(&token)
|
||
// if claims == nil {
|
||
// yy.RespUnauth(c, "token无效或过期,请重新登录", nil, nil)
|
||
// c.Abort()
|
||
// }
|
||
// c.Set("user", claims)
|
||
// c.Next()
|
||
// }
|
||
// }
|
||
|
||
// func userAuthWithGrpc(token *string) *yy.UserClaims {
|
||
// srv, err := consul.FindService("oauth", "v1")
|
||
// if err != nil {
|
||
// logrus.WithFields(logrus.Fields{
|
||
// "func": "userAuthWithGrpc",
|
||
// }).Errorf("consul.FindServer: %s", err.Error())
|
||
// return nil
|
||
// }
|
||
// defer srv.Close()
|
||
// client := pb.NewCertificationClient(srv)
|
||
// resp, err := client.Auth(context.Background(), &pb.CertificationAuthRequest{
|
||
// Token: *token,
|
||
// })
|
||
// if err != nil {
|
||
// logrus.WithFields(logrus.Fields{
|
||
// "func": "userAuthWithGrpc",
|
||
// }).Errorf("client.Auth: %s", err.Error())
|
||
// return nil
|
||
// }
|
||
// if resp.Result == "ok" {
|
||
// r := &yy.UserClaims{}
|
||
// if err := json.Unmarshal(resp.Data.Value, r); err != nil {
|
||
// logrus.WithFields(logrus.Fields{
|
||
// "func": "userAuthWithGrpc",
|
||
// }).Errorf("json.Unmarshal: %s", err.Error())
|
||
// return nil
|
||
// }
|
||
// return r
|
||
// }
|
||
// logrus.WithFields(logrus.Fields{
|
||
// "func": "userAuthWithGrpc",
|
||
// }).Warnln("nil")
|
||
// return nil
|
||
// }
|