feat(auth): 完善扫码登录状态逻辑,支持绑定手机号和跳转
- 新增响应字段 nextAction、redirectUrl 和 successMessage,用于表示下一步操作 - 扫码登录状态为绑定手机号时,设置 nextAction 为 bind_phone,清空跳转地址 - 扫码已确认且有访问令牌时,设置跳转控制台页面,带成功提示信息 - 其他状态默认保持等待状态,确保扫码流程向前推进 - 更新扫码登录响应模型,优化前端流程控制体验
This commit is contained in:
@@ -37,6 +37,15 @@ public class QrLoginStatusResponse {
|
||||
@Schema(description = "状态提示信息")
|
||||
private String message;
|
||||
|
||||
@Schema(description = "下一步操作:bind_phone-绑定手机号, redirect-跳转, login-直接登录")
|
||||
private String nextAction;
|
||||
|
||||
@Schema(description = "跳转URL(当nextAction为redirect时使用)")
|
||||
private String redirectUrl;
|
||||
|
||||
@Schema(description = "成功消息")
|
||||
private String successMessage;
|
||||
|
||||
public QrLoginStatusResponse(String status, String accessToken, User userInfo, Long expiresIn, Integer tenantId) {
|
||||
this.status = status;
|
||||
this.accessToken = accessToken;
|
||||
|
||||
@@ -442,6 +442,18 @@ public class QrLoginServiceImpl implements QrLoginService {
|
||||
|| QR_LOGIN_STATUS_BIND_PHONE.equals(qrLoginData.getStatus()));
|
||||
response.setMessage(qrLoginData.getMessage());
|
||||
|
||||
// 设置下一步操作逻辑
|
||||
if (QR_LOGIN_STATUS_BIND_PHONE.equals(qrLoginData.getStatus()) || Boolean.TRUE.equals(qrLoginData.getNeedBindPhone())) {
|
||||
response.setNextAction("bind_phone");
|
||||
response.setRedirectUrl(null);
|
||||
} else if (QR_LOGIN_STATUS_CONFIRMED.equals(qrLoginData.getStatus()) && StrUtil.isNotBlank(qrLoginData.getAccessToken())) {
|
||||
response.setNextAction("redirect");
|
||||
response.setRedirectUrl("/console");
|
||||
response.setSuccessMessage("登录成功,即将跳转到控制台");
|
||||
} else {
|
||||
response.setNextAction("wait");
|
||||
}
|
||||
|
||||
if (qrLoginData.getUserId() != null) {
|
||||
try {
|
||||
User user = userService.getAllByUserId(String.valueOf(qrLoginData.getUserId()));
|
||||
|
||||
Reference in New Issue
Block a user