封装GenerateAccessToken方法,
设置头像和昵称默认值
This commit is contained in:
parent
5acaf1028b
commit
23a91824a0
@ -2,12 +2,9 @@ package douyin
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"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/svc"
|
||||||
"gitea.youtukeji.com.cn/xiabin/youtu_server/game_open_api/internal/types"
|
"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"
|
"github.com/zeromicro/go-zero/core/logx"
|
||||||
)
|
)
|
||||||
@ -65,26 +62,20 @@ func (l *DouyinCode2tokenLogic) DouyinCode2token(req *types.DouyinCode2TokenRequ
|
|||||||
Openid: res.Openid,
|
Openid: res.Openid,
|
||||||
Unionid: res.Unionid,
|
Unionid: res.Unionid,
|
||||||
AnonymousOpenid: res.AnonymousOpenid,
|
AnonymousOpenid: res.AnonymousOpenid,
|
||||||
|
Nickname: svc.GetRandomUsername(),
|
||||||
|
Avatar: "https://youtukeji.com.cn/candy/images/lollipop.png",
|
||||||
}
|
}
|
||||||
err = l.svcCtx.AppUser.FindOrCreate(l.ctx, aui)
|
err = l.svcCtx.AppUser.FindOrCreate(l.ctx, aui)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
claims := make(jwt.MapClaims)
|
resp.Token, err = l.svcCtx.GenerateAccessToken(&svc.AccessToken{
|
||||||
claims["exp"] = time.Now().Unix() + l.svcCtx.Config.Auth.AccessExpire
|
|
||||||
claims["iat"] = l.svcCtx.Config.Auth.AccessExpire
|
|
||||||
|
|
||||||
claims["payload"] = &svc.AccessToken{
|
|
||||||
AppId: accountId,
|
AppId: accountId,
|
||||||
UserId: aui.Id,
|
UserId: aui.Id,
|
||||||
AppIdStr: req.AppId,
|
AppIdStr: req.AppId,
|
||||||
OpenId: res.Openid,
|
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
|
return
|
||||||
}
|
}
|
||||||
|
@ -3,12 +3,9 @@ package wechat
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
"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/svc"
|
||||||
"gitea.youtukeji.com.cn/xiabin/youtu_server/game_open_api/internal/types"
|
"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"
|
"github.com/zeromicro/go-zero/core/logx"
|
||||||
)
|
)
|
||||||
@ -53,26 +50,20 @@ func (l *WechatCode2UserIdLogic) WechatCode2UserId(req *types.WechatCode2TokenRe
|
|||||||
AppAccountId: accountId,
|
AppAccountId: accountId,
|
||||||
Openid: res.OpenID,
|
Openid: res.OpenID,
|
||||||
Unionid: res.UnionID,
|
Unionid: res.UnionID,
|
||||||
|
Nickname: svc.GetRandomUsername(),
|
||||||
|
Avatar: "https://youtukeji.com.cn/candy/images/lollipop.png",
|
||||||
}
|
}
|
||||||
|
|
||||||
err = l.svcCtx.AppUser.FindOrCreate(l.ctx, aui)
|
err = l.svcCtx.AppUser.FindOrCreate(l.ctx, aui)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
claims := make(jwt.MapClaims)
|
resp.Token, err = l.svcCtx.GenerateAccessToken(&svc.AccessToken{
|
||||||
claims["exp"] = time.Now().Unix() + l.svcCtx.Config.Auth.AccessExpire
|
|
||||||
claims["iat"] = l.svcCtx.Config.Auth.AccessExpire
|
|
||||||
|
|
||||||
claims["payload"] = &svc.AccessToken{
|
|
||||||
AppId: accountId,
|
AppId: accountId,
|
||||||
UserId: aui.Id,
|
UserId: aui.Id,
|
||||||
AppIdStr: req.AppId,
|
AppIdStr: req.AppId,
|
||||||
OpenId: res.OpenID,
|
OpenId: res.OpenID,
|
||||||
}
|
})
|
||||||
token := jwt.New(jwt.SigningMethodHS256)
|
|
||||||
token.Claims = claims
|
|
||||||
resp.Token, err = token.SignedString([]byte(l.svcCtx.Config.Auth.AccessSecret))
|
|
||||||
|
|
||||||
return
|
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/internal/config"
|
||||||
"gitea.youtukeji.com.cn/xiabin/youtu_server/game_open_api/model"
|
"gitea.youtukeji.com.cn/xiabin/youtu_server/game_open_api/model"
|
||||||
helper "gitea.youtukeji.com.cn/youtu/openapi-helper"
|
helper "gitea.youtukeji.com.cn/youtu/openapi-helper"
|
||||||
|
"github.com/golang-jwt/jwt/v4"
|
||||||
redisCache "github.com/silenceper/wechat/v2/cache"
|
redisCache "github.com/silenceper/wechat/v2/cache"
|
||||||
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"go.uber.org/zap/zapcore"
|
"go.uber.org/zap/zapcore"
|
||||||
"gopkg.in/natefinch/lumberjack.v2"
|
"gopkg.in/natefinch/lumberjack.v2"
|
||||||
|
"math/rand"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ServiceContext struct {
|
type ServiceContext struct {
|
||||||
@ -103,3 +106,40 @@ func UnmarshalAccessToken(d any) (ac AccessToken, err error) {
|
|||||||
func GetCtxToken(ctx context.Context) (ac AccessToken, err error) {
|
func GetCtxToken(ctx context.Context) (ac AccessToken, err error) {
|
||||||
return UnmarshalAccessToken(ctx.Value("payload"))
|
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