axios 如何检查用户是否使用JWT登录reactjs

rn0zuynd  于 2022-12-18  发布在  iOS
关注(0)|答案(1)|浏览(158)

我试图使一个系统,它可以检查它的用户是不是IM登录使用reactjs和JWT令牌,可以存储到浏览器中的cookie。
这是我的reactjs文件代码

const ApproveRequest = (approveOption) => {
        if (approveOption === "approve"){
            let request = 1;
            axios.put("http://localhost:3001/cash/approverequest",{
                approved: request, 
                id: id,
                header: { accessToken: cookies.getItem("accessToken") },
                withCredentials: true,
            }).then((response) => {
                if(response.data.error) {
                    console.log(response.data.error);
                }else{
                    setCashObject({ ...cashObject, request: request });
                    alert("Request Approve");
                }
            });
        } else {
            alert("Field to update the request please contact the dev");
        }
    }

从服务器JWT.js文件

const validateToken = (req, res, next) => {
    const accessToken = req.header("accessToken");

    if(!accessToken) {
        return res.json({error: "User not authenticated"});
    }

    try{
        const validToken = verify(accessToken, "bluedragon14S");
        if(validToken){
            req.authenticated = true;
            return next;
        }
    }catch (err) {
        return res.json({error: err});
    }
}

从服务器cash.js路由

router.put("/approverequest", validateToken,async (req, res) => {
    const { request = 1, id } = req.body;
    await Cash.update({request: request}, {where: {id: id} });
    res.json(request);
});


我想是我想检查用户是否登录,以便他/她可以更新请求提前感谢您的帮助
另外,在该代码中,我可以将cookie存储到浏览器中,我只是不知道如何检查用户是否登录

57hvy0tb

57hvy0tb1#

我认为您可以通过以下方式访问用户Cookie:

req.cookies.accessToken

所以改变一下:

const accessToken = req.header("accessToken");

改为:

const accessToken = req.cookies?.accessToken

if(accessToken )
...

相关问题