浏览代码

前端展示二维码

orangebabu 9 月之前
父节点
当前提交
603c3f7a81

+ 1 - 1
maxkey-persistence/src/main/java/org/dromara/maxkey/persistence/service/ScanCodeService.java

@@ -56,7 +56,7 @@ public class ScanCodeService {
     public Long createTicket() {
         Long ticket = 0L;
         ticket = Long.parseLong(idGenerator.generate());
-        momentaryService.put(getKey(ticket), "ORCode", Duration.ofSeconds(validitySeconds));
+        momentaryService.put(getKey(ticket), "", Duration.ofSeconds(validitySeconds));
         _logger.info("Ticket {} , Duration {}", ticket , Duration.ofSeconds(validitySeconds));
         return ticket;
     }

+ 2 - 2
maxkey-web-frontend/maxkey-web-app/src/app/routes/passport/login/login.component.html

@@ -83,9 +83,9 @@
     </nz-form-item>
   </div>
   <div nz-row *ngIf="loginType=='qrscan'">
-    <div class="qrcode" id="div_qrcodelogin" style="background: #fff;padding: 20px;"> </div>
+    <div class="qrcode" id="div_qrcodelogin" style="background: #fff;padding: 20px;"></div>
     <div id="qrexpire" *ngIf="qrexpire" style="width: 100%;text-align: center;background: #fff;padding-bottom: 20px;">
-      二维码过期 <a href="javascript:" (click)="getLoginQrCode()">刷新</a>
+      二维码过期 <a href="javascript:void(0);" (click)="getLoginQrCode()">刷新</a>
     </div>
   </div>
   <nz-form-item *ngIf="loginType == 'normal' || loginType == 'mobile'">

+ 15 - 2
maxkey-web-frontend/maxkey-web-app/src/app/routes/passport/login/login.component.ts

@@ -299,13 +299,26 @@ export class UserLoginComponent implements OnInit, OnDestroy {
   }
 
   getLoginQrCode() {
+    this.qrexpire = false;
+
     this.qrCodeService.getLoginQrCode().subscribe(res => {
-      if (res.code === 0) {
+      if (res.code === 0 && res.data.rqCode) { // 使用返回的 rqCode
+        const qrImageElement = document.getElementById('div_qrcodelogin');
+        if (qrImageElement) {
+          qrImageElement.innerHTML = `<img src="${res.data.rqCode}" alt="QR Code" style="width: 200px; height: 200px;">`;
+        }
 
+        // 设置三分钟后 qrexpire 为 false
+        setTimeout(() => {
+          this.qrexpire = true;
+          this.cdr.detectChanges(); // 更新视图
+        }, 3 * 60 * 1000); // 180000 毫秒 = 3 分钟
       }
-    })
+    });
   }
 
+
+
   getQrCode(): void {
     this.qrexpire = false;
     if (this.interval$) {

+ 7 - 2
maxkey-webs/maxkey-web-maxkey/src/main/java/org/dromara/maxkey/web/contorller/LoginEntryPoint.java

@@ -25,6 +25,8 @@ import org.dromara.maxkey.authn.LoginCredential;
 import org.dromara.maxkey.authn.jwt.AuthJwt;
 import org.dromara.maxkey.authn.jwt.AuthTokenService;
 import org.dromara.maxkey.authn.provider.AbstractAuthenticationProvider;
+import org.dromara.maxkey.authn.session.Session;
+import org.dromara.maxkey.authn.session.SessionManager;
 import org.dromara.maxkey.authn.support.kerberos.KerberosService;
 import org.dromara.maxkey.authn.support.rememberme.AbstractRemeberMeManager;
 import org.dromara.maxkey.authn.support.rememberme.RemeberMe;
@@ -107,6 +109,9 @@ public class LoginEntryPoint {
 	@Autowired
 	AbstractRemeberMeManager remeberMeManager;
 
+	@Autowired
+	SessionManager sessionManager;
+
 	/**
 	 * init login
 	 * @return
@@ -214,7 +219,7 @@ public class LoginEntryPoint {
 
  	/**
  	 * normal
- 	 * @param loginCredential
+ 	 * @param credential
  	 * @return
  	 */
 	@Operation(summary = "登录接口", description = "登录接口",method="POST")
@@ -254,7 +259,7 @@ public class LoginEntryPoint {
 
  	/**
  	 * for congress
- 	 * @param loginCredential
+ 	 * @param credential
  	 * @return
  	 */
  	@PostMapping(value={"/congress"})