我的 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
}
非常感谢你们!