0

我的 APIrest 中有几个端点,其中很多都通过了 JWT 令牌的验证。当我尝试使用我的前端应用程序更新用户时,总是告诉我我没有被授权。我试图用邮递员更新用户,一切正常。 邮递员结果 使用相同的令牌,除了在我的前端应用程序中更新用户之外,我可以做任何事情。

这是我的前端应用程序的请求:

export function updateInfoApi(data){
    const url = `${API_HOST}/user`;
    const params = {
        method: "PUT",
        headers:{
            Authorization: `Bearer${getTokenApi()}`
        },
        body: data
    }
    return fetch(url, params)
    .then(response => {
        return response;
    }).catch(err => {
        return err;
    });
}

我的前端应用程序中有几个具有相同变量的请求,它们工作正常:

export function addTootApi(message){
    const url = `${API_HOST}/toots`
    const data = {
        message
    }
    const params ={
        method:"POST",
        headers:{
            "Content-Type":"application/json",
            Authorization: `Bearer${getTokenApi()}`
        },
        body: JSON.stringify(data),
    };
    return fetch(url, params).then(response => {
        if(response.status >=200 && response.status<300){
        return {code:response.status, message:"Toot enviado."}
        }
        return {code:500, message:"Error del servidor."}
    }).catch(err=> {return err;});
}

这是我处理令牌的地方......但就像我说的那样,这很好,因为总是工作......只有当我请求使用我的前端应用程序更新用户时才工作。

/*ProcessToken process the token*/
func ProcessToken(tk string) (*models.Claim, bool, string, error) {
    miClave := []byte("crazyforsnowboards")
    claims := &models.Claim{}

    splitToken := strings.Split(tk, "Bearer")
    if len(splitToken) != 2 {
        return claims, false, string(""), errors.New("Invalid format of token")
    }

    tk = strings.TrimSpace(splitToken[1])
    tkn, err := jwt.ParseWithClaims(tk, claims, func(token *jwt.Token) (interface{}, error) {
        return miClave, nil
    })
    if err == nil {
        _, found, _ := database.UserAlreadyExist(claims.Email)
        if found == true {
            Email = claims.Email
            UserID = claims.ID.Hex()
        }
        return claims, found, UserID, nil
    }
    if !tkn.Valid {
        return claims, false, string(""), errors.New("Invalid Token")
    }

    return claims, false, string(""), err
}

非常感谢你们!

4

1 回答 1

1

永远不要忘记JSON.stringify

非常感谢帮助这个昏昏欲睡的家伙:)

于 2021-03-10T10:15:54.147 回答