美文网首页
(七)Node接口搭建——使用jwt实现token

(七)Node接口搭建——使用jwt实现token

作者: 彼得朱 | 来源:发表于2019-07-08 19:14 被阅读0次

上一节成功之后返回的是success,我们希望返回token,需要引入第三方jsonwebtoken

那什么是token呢:点击了解详情

token在计算机身份认证中是令牌(临时)的意思,可以看作是暗号,在一些数据传输之前,要先进行暗号的核对,不同的暗号被授权不同的数据操作。

1、安装jsonwebtoken

npm install jsonwebtoken

2、routes/api/users.js引入

const jwt = require('jsonwebtoken');

3、登录接口成功那里用jwt

jwt.sign("规则","加密名字","过期时间","箭头函数")

4、自己定义规则

const rule = {id:user.id,name:user.name};

5、加密名字

  • 在config/keys.js里面加入 secretOrKey:"secret"
  • 在../api/users.js里面引入 const keys = require("../../config/keys");
  • 将jwt.sign中的加密名字替换成 keys.secretOrKey

6、设置过期时间

将jwt.sign中的过期时间设置为1小时(根据自己情况设置) {expiresIn:3600}

7、设置箭头函数

//最后的login接口

router.post("/login", (req, res) => {
    const email = req.body.email;
    const password = req.body.password;
    //查询数据库
    User.findOne({
            email
        })
        .then(user => {
            if (!user) {
                return res.json({
                    email: "用户不存在"
                }); //return res.status(404).json({email:"用户不存在"});
            }
            //密码匹配  使用token
            bcrypt.compare(password, user.password)
                .then(isMatch => {
                    if (isMatch) {
                        const rule = {
                            id: user.id,
                            name: user.name
                        };
                        //用id和name来做一个token
                        // jwt.sign("规则", "加密名字", "过期时间", "箭头函数");
                        jwt.sign(rule, keys.secretOrKey, {
                            expiresIn: 3600
                        }, (err, token) => {
                            if (err) {
                                throw err
                            };
                            res.json({
                                success: true,
                                token: "dj" + token
                                //返回一个固定值+taken规则的的token
                            });
                        })
                        // res.json({msg:"success"});
                    } else {
                        return res.json({
                            password: "密码错误!"
                        });
                        //return res.status(400).json({password:"密码错误!"});
                    }
                })
        })
})

8、用postman测试接口(输入一个存在的账号)

测试结果

相关文章

网友评论

      本文标题:(七)Node接口搭建——使用jwt实现token

      本文链接:https://www.haomeiwen.com/subject/ennahctx.html