gpt4 book ai didi

reactjs - 如何使用 Axios 和 React 传递 Header JWT Token?

转载 作者:可可西里 更新时间:2023-11-01 09:11:08 29 4
gpt4 key购买 nike

我使用 React、Express、MongoDB 制作网络应用程序。

而且,我想通过 header 传递 jwt token 。

但是,我通过了,得到 401 错误(未授权)。

在登录 actions.js 中:

export function login(username, password) {
return function(dispatch) {
axios
.post(`${API_URL}/auth/login`, { username, password })
.then(res => {
dispatch(loginSuccess(res.data, username));
const token = res.data.token;
axios.defaults.headers.common["Authorization"] = token;
history.push("/");
})
.catch(err => {
if (err.response.status === 401) {
dispatch(loginFailure(err));
}
});
};
}

并且,在我服务器的 post.js 中:

getToken = function(headers) {
if (headers && headers.authorization) {
var parted = headers.authorization.split(" ");
if (parted.length === 2) {
return parted[1];
} else {
return null;
}
} else {
return null;
}
};
...
// Save Post
router.post("/", passport.authenticate("jwt", { session: false }),
function(
req,
res,
next
) {
var token = getToken(req.headers);
if (token) {
Post.create(req.body, function(err, post) {
if (err) return next(err);
res.json(post);
});
} else {
return res.status(403).send({ success: false, msg: "Unauthorized." });
}
});

我该如何解决? + 登录成功

最佳答案

首先,当您登录并将用户名和密码发送到后端时,作为响应您将获得 token_id。现在尝试将 token 存储在 session_storage 中并重定向到您想要的页面。现在你在你的愿望页面中使用 token_id 并像这样存储一个变量..

let user = JSON.parse(sessionStorage.getItem('data'));
const token = user.data.id;

现在您有了 token 并传入 header 并获取数据作为响应

const api = `your api here`
axios.get(api, { headers: {"Authorization" : `Bearer ${token}`} })
.then(res => {
console.log(res.data);
this.setState({
items: res.data, /*set response data in items array*/
isLoaded : true,
redirectToReferrer: false
})

注意:您应该在初始 setState 中设置空白项数组,如下所示

this.state={
items:[],
isLoaded: false,
redirectToReferrer:false,
token:''
}

关于reactjs - 如何使用 Axios 和 React 传递 Header JWT Token?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51586458/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com