This commit is contained in:
parent
ea613b5265
commit
cd0ef80d15
@ -200,7 +200,7 @@ func (l *BindEmailWithVerificationLogic) BindEmailWithVerification(req *types.Bi
|
||||
// }
|
||||
}
|
||||
// 4. 生成新的JWT token
|
||||
token, err := l.generateTokenForUser(emailUserId)
|
||||
token, err := l.generateTokenForUser(emailUserId, deviceIdentifier)
|
||||
if err != nil {
|
||||
l.Errorw("生成JWT token失败", logger.Field("error", err.Error()), logger.Field("email_user_id", emailUserId))
|
||||
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseQueryError), "生成JWT token失败")
|
||||
@ -428,12 +428,12 @@ func (l *BindEmailWithVerificationLogic) transferDeviceToEmailUser(deviceUserId,
|
||||
}
|
||||
|
||||
// 4. 生成新的JWT token
|
||||
token, err := l.generateTokenForUser(emailUserId)
|
||||
token, err := l.generateTokenForUser(emailUserId, deviceIdentifier)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 5. 强制清除邮箱用户的所有相关缓存(确保获取最新数据)// 清除邮箱用户缓存
|
||||
// 5. 强制清除邮箱用户的所有相关缓存(确保获取最新数据)
|
||||
emailUser, _ := l.svcCtx.UserModel.FindOne(l.ctx, emailUserId)
|
||||
if emailUser != nil {
|
||||
// 清除用户的批量相关缓存(包括设备、认证方法等)
|
||||
@ -454,7 +454,7 @@ func (l *BindEmailWithVerificationLogic) transferDeviceToEmailUser(deviceUserId,
|
||||
}
|
||||
|
||||
// generateTokenForUser 为指定用户生成JWT token
|
||||
func (l *BindEmailWithVerificationLogic) generateTokenForUser(userId int64) (string, error) {
|
||||
func (l *BindEmailWithVerificationLogic) generateTokenForUser(userId int64, deviceIdentifier string) (string, error) {
|
||||
// 生成JWT token
|
||||
accessExpire := l.svcCtx.Config.JwtAuth.AccessExpire
|
||||
sessionId := uuidx.NewUUID().String()
|
||||
@ -479,6 +479,17 @@ func (l *BindEmailWithVerificationLogic) generateTokenForUser(userId int64) (str
|
||||
// session缓存失败不影响token生成,只记录错误
|
||||
}
|
||||
|
||||
// 设置设备缓存映射 (identifier -> sessionId)
|
||||
if deviceIdentifier != "" {
|
||||
deviceCacheKey := fmt.Sprintf("%v:%v", config.DeviceCacheKeyKey, deviceIdentifier)
|
||||
if err := l.svcCtx.Redis.Set(l.ctx, deviceCacheKey, sessionId, time.Duration(accessExpire)*time.Second).Err(); err != nil {
|
||||
l.Errorw("设置设备缓存失败", logger.Field("error", err.Error()), logger.Field("device_identifier", deviceIdentifier))
|
||||
// 不影响主流程,只记录错误
|
||||
} else {
|
||||
l.Infow("更新设备Session映射成功", logger.Field("device_identifier", deviceIdentifier), logger.Field("session_id", sessionId))
|
||||
}
|
||||
}
|
||||
|
||||
l.Infow("为用户生成token成功", logger.Field("user_id", userId))
|
||||
return jwtToken, nil
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user