簡體   English   中英

僅當錯誤代碼為 403 時才嘗試登錄

[英]Only attempt to login if the error code is 403

我沒有 API 檢查令牌是否過期。 我必須打一個 GET 電話,如果我收到來自 API 的403錯誤,那么我應該重新登錄。

我嘗試過:

app.get = async (body) => {

    return new Promise((resolve, reject) => {

        let user = await user.findOne({
            where: {
                accountId: body.accountId
            }
        });

        if(user){
            body.accessToken = user.accessToken;
        } else {
            body.accessToken  = await app.login(); 
        }

        request(
        {
            headers: {
                'Accept': 'application/json',
                'Authorization': 'Bearer ' + body.accessToken
            },
            method: 'GET',
            uri: `${config.acs.url}${body.url}`,
            json: true
        }
        )

        .then((response) => {
            resolve(response);
        })
        .catch((error) => {
            // logger.info(error);

            if(error.statusCode == 403){
                body.accessToken  = await app.login(); <<------------- 🐞🐞🐞
                app.get(body);
            }

            reject(error);
        });

    });

}

我不知道如何避免這個錯誤。

SyntaxError: await 僅在async function 中有效

我已經有了

app.get = async (body) => { ...

只有當我在錯誤塊中獲得 403 代碼時才需要重新登錄。

如何重新構建我的代碼以實現我所描述的?

Promise 中使用的Promise不是async function

試試這個片段

app.get = async (body) => {
    let resolve, reject;
    const promise = new Promise((re, rj) => {
        resolve = re;
        reject = rj;
    });

    let user = await user.findOne({
        where: {
            accountId: body.accountId
        }
    });

    if(user){
        body.accessToken = user.accessToken;
    } else {
        body.accessToken  = await app.login(); 
    }

    request(
    {
        headers: {
            'Accept': 'application/json',
            'Authorization': 'Bearer ' + body.accessToken
        },
        method: 'GET',
        uri: `${config.acs.url}${body.url}`,
        json: true
    }
    )

    .then((response) => {
        resolve(response);
    })
    .catch(async (error) => {
        // logger.info(error);

        if(error.statusCode == 403){
            body.accessToken  = await app.login(); <<------------- 🐞🐞🐞
            app.get(body);
        }

        reject(error);
    });

    return promise;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM