阅读 79

express+token最简单的后端

使用express搭建项目

  1. 安装express-generator,推荐全局安装

    npm install -g express-generator复制代码
  2. 通过express-generator工具完成项目的创建

    express 项目名字复制代码
  3. 允许启动项目

    cd 项目
    npm install 将项目需要依赖的第三方包现在到本地
    npm start完成项目的启动
    
    http://127.0.0.1:3000  http://localhost:3000复制代码

更改好自己的app.js的代码,导入新的接口,创建api.js。

身份认证流程

1.用户输入登录信息,发送登录请求到后端;

2.服务端验证登录信息,如果登录成功,服务锛生成token (令牌,用于保存用户的相关信息) ;

3.将生成的token返回抬前端,前端通过localStorage将token存储在本地;

4.在后续所有的清求中,前螭都会将token携带上,-并发送至后台;

5.后端对token进行验证,验证是否有token,如果有,则需要验证token是否有效、是否过期;

6.验证失败,后端直按返回401报错给前端;

7.验证成功,对token进行解码,拿剄token中保存的用户信息返回给前端;

8.如果用户退出登录,将本地存储中token删除即可。

前端后端分离步骤

1.先安装

npm i jsonwebtoken

api.js就相当是在post设置用户名和密码,然后获取post里面解析的密钥签名,然后输入get在token里面进行判断。然后去add.js里面进行判断,进行跳转。

2.导入 var jwt =require("jsonwebtoken")

3.生成token值(密钥+账户+密码)

const token=jwt.sign({
  data: '用户信息,密码账号'
}, '密钥签名', { expiresIn:过期时间,一般用h});复制代码
router.post('/1ogin', function (req, res, next) {
    // 1.拿到前端传递过来的用户名+密码
    const user = req.body;
    //判断传来的数据是否正确
    if (user.username != '小红' || user.password != 123456) {
        // 如果不正确那就发送
        res.send({
            status: 0,
            msg: "账户或者密码错误"
        })
    }
    // 2.设置签名并且结合用户名+密码生成Token
    const token = jwt.sign(user, 'kongbai', { expiresIn: '24h' });
    //3.返回给客户端Token值
    //如果登录成功
    res.send({
        status: 1,
        msg: "登录成功",
        data: {
            token: token
        }
    })

});复制代码

设计登录成功接口,token判断

//登录完成以后,判断登录状态,是否有token值,是否正确,如果成功那么跳转页面
router.get('/menus', (req,res,next)=>{
    // 登录后请求的接口,必须登录状态
    res.send({
        msg: "helloworld"
    })
})复制代码

对于get这种接口必须是登录成功以后携带token值

1.先下载npm install express-jwt --save

var expressJwt = require("express-jwt");

// 中间件处理数据
//验证token是否过期并规定哪些路由不用验证
app.use(expressJwt({
  secret: 'kuaixiang1991',
  algorithms: ['HS256'] // 加密算法
}).unless({
  path: ['/', '/api/login']//除了这个地址,其他的URL都需要验证
}))

app.use(function(err, req, res, next) {
  if (err.name === 'UnauthorizedError') {
    console.error(req.path + ',无效token');
    res.json({
      msg: 'token过期或者无效,请重新登录',
      status: 401
     })
    res.redirect(302,"http://127.0.0.1:5500/index.html")
    return
  }
  next()
})复制代码

然后在登录页面输入账户密码,得到token,如果过期重新登录,如果正确跳转到登陆成功页面。


作者:用户826174313832
链接:https://juejin.cn/post/7019589291093278734

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐