修改微信登录 bug

This commit is contained in:
2025-06-11 17:31:17 +08:00
parent 1e94848f8d
commit 3f5d0d7b2b
3 changed files with 12 additions and 3 deletions

View File

@ -5,6 +5,7 @@ import (
"crypto/sha1" "crypto/sha1"
"fmt" "fmt"
"github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/glog"
"server/utility/wechat" "server/utility/wechat"
"sort" "sort"
"strings" "strings"
@ -17,15 +18,17 @@ func (c *ControllerV1) WeChatVertify(ctx context.Context, req *v1.WeChatVertifyR
// 1. 排序 // 1. 排序
params := []string{wechat.GetWeChatClient().GetToken(), req.Timestamp, req.Nonce} params := []string{wechat.GetWeChatClient().GetToken(), req.Timestamp, req.Nonce}
sort.Strings(params) sort.Strings(params)
glog.Infof(ctx, "排序后的参数: %s", params)
// 2. 拼接成字符串 // 2. 拼接成字符串
str := strings.Join(params, "") str := strings.Join(params, "")
glog.Infof(ctx, "拼接后的字符串: %s", str)
// 3. SHA1 加密 // 3. SHA1 加密
h := sha1.New() h := sha1.New()
h.Write([]byte(str)) h.Write([]byte(str))
sha1Str := fmt.Sprintf("%x", h.Sum(nil)) sha1Str := fmt.Sprintf("%x", h.Sum(nil))
glog.Infof(ctx, "SHA1 加密后的字符串: %s", sha1Str)
// 4. 比较签名 // 4. 比较签名
if sha1Str != req.Signature { if sha1Str != req.Signature {
return nil, fmt.Errorf("签名错误") return nil, fmt.Errorf("签名错误")

View File

@ -53,7 +53,7 @@ func New() service.IUser {
} }
func (s *sUser) Login(ctx context.Context, in *model.UserLoginIn) (out *model.UserLoginOut, err error) { func (s *sUser) Login(ctx context.Context, in *model.UserLoginIn) (out *model.UserLoginOut, err error) {
value, err := dao.Roles.Ctx(ctx).Where(do.Roles{Code: consts.UserRoleCode}).Fields(dao.Roles.Columns().Code).Value() value, err := dao.Roles.Ctx(ctx).Where(do.Roles{Code: consts.UserRoleCode}).Fields(dao.Roles.Columns().Code, dao.Roles.Columns().Id).One()
if err != nil { if err != nil {
return nil, ecode.Fail.Sub("查找角色失败") return nil, ecode.Fail.Sub("查找角色失败")
} }
@ -93,6 +93,7 @@ func (s *sUser) Login(ctx context.Context, in *model.UserLoginIn) (out *model.Us
LastLoginAt: gtime.Now(), LastLoginAt: gtime.Now(),
WxPopenId: utility.GenerateUserID("WX"), WxPopenId: utility.GenerateUserID("WX"),
QqPopenId: utility.GenerateUserID("QQ"), QqPopenId: utility.GenerateUserID("QQ"),
RoleId: value[dao.Roles.Columns().Id].Int64(),
} }
result, err := dao.Users.Ctx(ctx).Insert(user) result, err := dao.Users.Ctx(ctx).Insert(user)
if err != nil { if err != nil {
@ -117,7 +118,7 @@ func (s *sUser) Login(ctx context.Context, in *model.UserLoginIn) (out *model.Us
// 生成 token // 生成 token
token, err := jwt.GenerateToken(&jwt.TokenIn{ token, err := jwt.GenerateToken(&jwt.TokenIn{
UserId: userId, UserId: userId,
Role: value.String(), Role: value[dao.Roles.Columns().Code].String(),
}) })
if err != nil { if err != nil {
return nil, ecode.Fail.Sub("生成token失败") return nil, ecode.Fail.Sub("生成token失败")

View File

@ -40,6 +40,7 @@ func init() {
AppId: g.Config().MustGet(ctx, "wechat.appId").String(), AppId: g.Config().MustGet(ctx, "wechat.appId").String(),
AppSecret: g.Config().MustGet(ctx, "wechat.appSecret").String(), AppSecret: g.Config().MustGet(ctx, "wechat.appSecret").String(),
TicketExpire: g.Config().MustGet(ctx, "wechat.ticketExpire").Int(), TicketExpire: g.Config().MustGet(ctx, "wechat.ticketExpire").Int(),
Token: g.Config().MustGet(ctx, "wechat.token").String(),
} }
go instance.autoRefreshToken(ctx) go instance.autoRefreshToken(ctx)
@ -168,3 +169,7 @@ func (c *weChatClient) GetQrCode(ticket string) (imagePath string, err error) {
func (c *weChatClient) GetToken() string { func (c *weChatClient) GetToken() string {
return c.Token return c.Token
} }
func (c *weChatClient) GetUserUnionId(openid string) (unionId string, err error) {
return
}