Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正在尝试保存令牌,以便在所有html页面上获取用户名_Html_Node.js - Fatal编程技术网

正在尝试保存令牌,以便在所有html页面上获取用户名

正在尝试保存令牌,以便在所有html页面上获取用户名,html,node.js,Html,Node.js,这是git,如果你想看看的话 我负责创建一个用户数据库,并完成了大部分工作。现在导致我出现问题的是,当用户登录时,创建的令牌(保存us_id)没有保存。我希望能够保存该令牌,以便在每个html页面中显示用户名 auth.js //Login router.post('/login', async (req, res) => { //Validate befor use const { error } = loginValidation(req.body); if (

这是git,如果你想看看的话

我负责创建一个用户数据库,并完成了大部分工作。现在导致我出现问题的是,当用户登录时,创建的令牌(保存us_id)没有保存。我希望能够保存该令牌,以便在每个html页面中显示用户名

auth.js

//Login
router.post('/login', async (req, res) => {
    //Validate befor use
    const { error } = loginValidation(req.body);
    if (error) return res.status(400).send(error.details[0].message);

    //CHANGE .send msg to 'Email or password is wrong' for security reasons
    //Check if email exist
    const user = await User.findOne({ email: req.body.email });
    if (!user) return res.status(400).send('Email is not found');

    //CHANGE .send msg to 'Email or password is wrong' for security reasons
    //Check if password is correct
    const validPass = await bcrypt.compare(req.body.password, user.password);
    if (!validPass) return res.status(400).send('Invalid pasword');

    //Create and assign a token
    const token = jwt.sign({ _id: user._id }, process.env.Token_SECRET);
    res.header('auth-token', token);
    if (!error) res.redirect('/public/index.html');
});
login.html

<form action="/" method="/api/user/login">
                <label for="username" id="name__pass">Username</label>
                <input type="text" id="name__passbox" name="username" placeholder="Username">
                <label for="password" id="name__pass">Password</label>
                <input type="text" id="name__passbox" name="password" placeholder="Password">
                <a href="/" class="log__button">LOGIN</a>
            </form>

用户名
密码
长话短说,我想保存令牌,这样我就可以从数据库中获取用户名,或者保存用户名以显示在所有html页面上。
这最终将用于验证哪个用户有权在网站上发布和管理内容。我真的需要解决这个问题,这就是我提供奖励的原因。

我建议您将令牌存储在cookie中,然后使用中间件访问它。对于express应用程序,request.headers不会持久存在。一些示例实现只是确保您使用cookie而不是本地存储。添加cookie解析器 在登录结束时添加到/routes/auth.js:

res.cookie("auth",token);
和您的/routes/verifyToken.js:

const token = req.header('auth-token') || req.cookies.auth;

我有一个示例auth(使用中间件,而不是manula添加的verify),因此您也可以查看它。

谢谢。这是正确的,但是,我也忘记了我需要在登录表单中添加帖子。不得不后退一步,我注意到我再也没有得到回应了。在某个时候,我的团队编辑了login.html文件,结果把我的测试搞砸了。我相信你不会想要50美元,所以如果你愿意,我会捐给你选择的慈善机构。非常感谢你