update
This commit is contained in:
@@ -3,7 +3,7 @@ import type { Result, DataOpts } from '@kevisual/query/query';
|
||||
import { setBaseResponse } from '@kevisual/query/query';
|
||||
import { LoginCacheStore, CacheStore } from './login-cache.ts';
|
||||
import { Cache } from './login-cache.ts';
|
||||
|
||||
import { BaseLoad } from '@kevisual/load';
|
||||
export type QueryLoginOpts = {
|
||||
query?: Query;
|
||||
isBrowser?: boolean;
|
||||
@@ -418,6 +418,12 @@ export class QueryLogin extends BaseQuery {
|
||||
}
|
||||
/**
|
||||
* 使用web登录,创建url地址, 需要MD5和jsonwebtoken
|
||||
*
|
||||
*
|
||||
|
||||
import MD5 from 'crypto-js/md5.js';
|
||||
import jsonwebtoken from 'jsonwebtoken';
|
||||
|
||||
*/
|
||||
loginWithWeb(baseURL: string, { MD5, jsonwebtoken }: { MD5: any; jsonwebtoken: any }) {
|
||||
const randomId = Math.random().toString(36).substring(2, 15);
|
||||
@@ -431,4 +437,46 @@ export class QueryLogin extends BaseQuery {
|
||||
const url = `${baseURL}/api/router?path=user&key=webLogin&p&loginToken=${token}&sign=${sign}&randomId=${randomId}`;
|
||||
return { url, token, tokenSecret };
|
||||
}
|
||||
/**
|
||||
*轮询登录状态
|
||||
*
|
||||
*
|
||||
*
|
||||
const res = queryLogin.loginWithWeb(baseURL, { MD5, jsonwebtoken });
|
||||
await pollLoginStatus(res.token, { tokenSecret: res.tokenSecret });
|
||||
* 轮询登录状态
|
||||
*/
|
||||
async pollLoginStatus(data: { token: string; tokenSecret: string }) {
|
||||
const token = data.token;
|
||||
const load = new BaseLoad();
|
||||
load.load(
|
||||
async () => {
|
||||
const res = await this.checkLoginStatus(token);
|
||||
if (res.code === 500) {
|
||||
load.cancel('check-login-status');
|
||||
}
|
||||
return res;
|
||||
},
|
||||
{
|
||||
key: 'check-login-status',
|
||||
isReRun: true,
|
||||
checkSuccess: (data) => {
|
||||
return data?.code === 200;
|
||||
},
|
||||
},
|
||||
);
|
||||
const res = await load.hasLoaded('check-login-status', {
|
||||
timeout: 60 * 3 * 1000, // 3分钟超时
|
||||
});
|
||||
if (res.code === 200 && res.data?.code === 200) {
|
||||
try {
|
||||
console.log('网页登录成功');
|
||||
return;
|
||||
} catch (error) {
|
||||
console.log('登录失败', error);
|
||||
return;
|
||||
}
|
||||
}
|
||||
console.log('登录失败', res);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user