封装GenerateAccessToken方法,
设置头像和昵称默认值
This commit is contained in:
parent
5acaf1028b
commit
23a91824a0
@ -2,12 +2,9 @@ package douyin
|
||||
|
||||
import (
|
||||
"context"
|
||||
"gitea.youtukeji.com.cn/xiabin/youtu_server/game_open_api/model"
|
||||
"github.com/golang-jwt/jwt/v4"
|
||||
"time"
|
||||
|
||||
"gitea.youtukeji.com.cn/xiabin/youtu_server/game_open_api/internal/svc"
|
||||
"gitea.youtukeji.com.cn/xiabin/youtu_server/game_open_api/internal/types"
|
||||
"gitea.youtukeji.com.cn/xiabin/youtu_server/game_open_api/model"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
@ -65,26 +62,20 @@ func (l *DouyinCode2tokenLogic) DouyinCode2token(req *types.DouyinCode2TokenRequ
|
||||
Openid: res.Openid,
|
||||
Unionid: res.Unionid,
|
||||
AnonymousOpenid: res.AnonymousOpenid,
|
||||
Nickname: svc.GetRandomUsername(),
|
||||
Avatar: "https://youtukeji.com.cn/candy/images/lollipop.png",
|
||||
}
|
||||
err = l.svcCtx.AppUser.FindOrCreate(l.ctx, aui)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
claims := make(jwt.MapClaims)
|
||||
claims["exp"] = time.Now().Unix() + l.svcCtx.Config.Auth.AccessExpire
|
||||
claims["iat"] = l.svcCtx.Config.Auth.AccessExpire
|
||||
|
||||
claims["payload"] = &svc.AccessToken{
|
||||
resp.Token, err = l.svcCtx.GenerateAccessToken(&svc.AccessToken{
|
||||
AppId: accountId,
|
||||
UserId: aui.Id,
|
||||
AppIdStr: req.AppId,
|
||||
OpenId: res.Openid,
|
||||
}
|
||||
l.Logger.Debugf("payload: %+v", claims["payload"])
|
||||
})
|
||||
|
||||
token := jwt.New(jwt.SigningMethodHS256)
|
||||
token.Claims = claims
|
||||
resp.Token, err = token.SignedString([]byte(l.svcCtx.Config.Auth.AccessSecret))
|
||||
return
|
||||
}
|
||||
|
@ -3,12 +3,9 @@ package wechat
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"gitea.youtukeji.com.cn/xiabin/youtu_server/game_open_api/model"
|
||||
"github.com/golang-jwt/jwt/v4"
|
||||
"time"
|
||||
|
||||
"gitea.youtukeji.com.cn/xiabin/youtu_server/game_open_api/internal/svc"
|
||||
"gitea.youtukeji.com.cn/xiabin/youtu_server/game_open_api/internal/types"
|
||||
"gitea.youtukeji.com.cn/xiabin/youtu_server/game_open_api/model"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
@ -53,26 +50,20 @@ func (l *WechatCode2UserIdLogic) WechatCode2UserId(req *types.WechatCode2TokenRe
|
||||
AppAccountId: accountId,
|
||||
Openid: res.OpenID,
|
||||
Unionid: res.UnionID,
|
||||
Nickname: svc.GetRandomUsername(),
|
||||
Avatar: "https://youtukeji.com.cn/candy/images/lollipop.png",
|
||||
}
|
||||
|
||||
err = l.svcCtx.AppUser.FindOrCreate(l.ctx, aui)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
claims := make(jwt.MapClaims)
|
||||
claims["exp"] = time.Now().Unix() + l.svcCtx.Config.Auth.AccessExpire
|
||||
claims["iat"] = l.svcCtx.Config.Auth.AccessExpire
|
||||
|
||||
claims["payload"] = &svc.AccessToken{
|
||||
resp.Token, err = l.svcCtx.GenerateAccessToken(&svc.AccessToken{
|
||||
AppId: accountId,
|
||||
UserId: aui.Id,
|
||||
AppIdStr: req.AppId,
|
||||
OpenId: res.OpenID,
|
||||
}
|
||||
token := jwt.New(jwt.SigningMethodHS256)
|
||||
token.Claims = claims
|
||||
resp.Token, err = token.SignedString([]byte(l.svcCtx.Config.Auth.AccessSecret))
|
||||
})
|
||||
|
||||
return
|
||||
}
|
||||
|
@ -7,11 +7,14 @@ import (
|
||||
"gitea.youtukeji.com.cn/xiabin/youtu_server/game_open_api/internal/config"
|
||||
"gitea.youtukeji.com.cn/xiabin/youtu_server/game_open_api/model"
|
||||
helper "gitea.youtukeji.com.cn/youtu/openapi-helper"
|
||||
"github.com/golang-jwt/jwt/v4"
|
||||
redisCache "github.com/silenceper/wechat/v2/cache"
|
||||
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||
"go.uber.org/zap"
|
||||
"go.uber.org/zap/zapcore"
|
||||
"gopkg.in/natefinch/lumberjack.v2"
|
||||
"math/rand"
|
||||
"time"
|
||||
)
|
||||
|
||||
type ServiceContext struct {
|
||||
@ -103,3 +106,40 @@ func UnmarshalAccessToken(d any) (ac AccessToken, err error) {
|
||||
func GetCtxToken(ctx context.Context) (ac AccessToken, err error) {
|
||||
return UnmarshalAccessToken(ctx.Value("payload"))
|
||||
}
|
||||
|
||||
// GenerateAccessToken 生成 JWT 认证的 token
|
||||
// 会从ServiceContext中获取配置信息
|
||||
func (svc *ServiceContext) GenerateAccessToken(at *AccessToken) (token string, err error) {
|
||||
claims := make(jwt.MapClaims)
|
||||
claims["exp"] = time.Now().Unix() + svc.Config.Auth.AccessExpire
|
||||
claims["iat"] = svc.Config.Auth.AccessExpire
|
||||
claims["payload"] = at
|
||||
|
||||
t := jwt.New(jwt.SigningMethodHS256)
|
||||
t.Claims = claims
|
||||
token, err = t.SignedString([]byte(svc.Config.Auth.AccessSecret))
|
||||
return
|
||||
}
|
||||
|
||||
var DefaultUsername = []string{
|
||||
"甜蜜糖果",
|
||||
"糖果爱好者",
|
||||
"软糖粉丝",
|
||||
"巧克力糖果控",
|
||||
"棒棒糖迷",
|
||||
"小熊软糖达人",
|
||||
"硬糖狂人",
|
||||
"焦糖糖果控",
|
||||
"水果糖行家",
|
||||
"棉花糖达人",
|
||||
}
|
||||
|
||||
// GetRandomUsername 随机获取一个糖果相关的用户名
|
||||
func GetRandomUsername() string {
|
||||
// 初始化随机数种子
|
||||
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||
// 生成一个 0 到列表长度减 1 之间的随机索引
|
||||
randomIndex := r.Intn(len(DefaultUsername))
|
||||
// 根据随机索引返回对应的用户名
|
||||
return DefaultUsername[randomIndex]
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user