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