当前位置: 首页 > news >正文

东城建站推广台州网站建设技术支持

东城建站推广,台州网站建设技术支持,唐尧文化 网站建设工作总结,南阳河南网站建设价格目录 前言 服务器 编写登录接口API 使用sql语句查询数据库中是否有该用户 判断密码是否正确 生成JWT的Token字符串 配置解析token的中间件 配置捕获错误中间件 完整的登录接口代码 前言 本文介绍如何使用node编写登录接口以及解密生成token#xff0c;如何编写注册接…目录 前言 服务器 编写登录接口API 使用sql语句查询数据库中是否有该用户 判断密码是否正确 生成JWT的Token字符串 配置解析token的中间件 配置捕获错误中间件 完整的登录接口代码 前言 本文介绍如何使用node编写登录接口以及解密生成token如何编写注册接口已经在Node编写用户注册接口这篇文章中介绍本文是建立在编写注册接口这篇文章的基础之上 同时也可以在在前端html页面中向服务器发送post登录请求这篇文章中了解登录请求 服务器 关于创建服务器本文中和Node编写用户注册接口共用一个服务器已经引入了router对象 // 导入express模块 const express require(express)// 创建express服务器实例 const app express()// 导入跨域cors const cors require(cors)// 全局挂载 app.use(cors())// 配置解析表单数据中间件 app.use(express.urlencoded({extended:false}))// 导入用户路由对象 const userRouter require(./router/user) app.use(/api,userRouter)// 启动服务器 app.listen(3007,() {console.log(running the http://127.0.0.1:3007); }) 编写登录接口API 使用sql语句查询数据库中是否有该用户 const userinfo req.bodyconst sql select * from ev_users where username ?db.query(sql, userinfo.username, function (err, results) {// 执行 SQL 语句失败if (err) {return res.send({status:1,message:err.message})}// 执行 SQL 语句成功但是查询到数据条数不等于 1if (results.length ! 1) {return res.send({status:1,message:登录失败})}res.send(登录成功)}) 使用postman模拟发送登录请求查询是否有用户名为b 返回登录成功 数据库中有b用户 如果未注册 数据库中没有c用户 判断密码是否正确 调用了bcrypt.compareSync()方法用来解密因为在注册时已经把密码加密了所以需要解密 bcrypt.compareSync(用户提交的密码数据库中的密码) // 判断密码是否正确const compareResult bcrypt.compareSync(userinfo.password,results[0].password)if(!compareResult) return res.send({status:1,message:密码错误})res.send(登录成功) 验证b的密码是否正确 b的密码是000000 当把b的密码换成111111时也就是错误密码 返回密码错误 生成JWT的Token字符串 关于JWT认证可以浏览JWT认证这篇文章 生成token字符串时要把密码和用户头像剔除因为生成的token会保留在浏览器中很容易泄露 // 剔除完毕之后user 中只保留了用户的 id, username, nickname, email 这四个属性的值 const user { ...results[0], password: , user_pic: } 先安装jsonwebtoken npm i jsonwebtoken 导入jwt const jwt require(jsonwebtoken) 导入成功后调用jwt.sign()生成JWT字符串 jwt.sign(用户的信息加密的密钥配置对象有效token的时间) // 生成 Token 字符串const tokenStr jwt.sign(user, jwtSecreKey, {expiresIn: 10h, // token 有效期为 10 个小时}) 将生成的token字符串发送给客户端 在生成的的token字符串前拼接上Bearer,固定用法 res.send({status: 0,message: 登录成功,// 为了方便客户端使用 Token在服务器端直接拼接上 Bearer 的前缀token: Bearer tokenStr,}) 使用postman模拟发送请求 配置解析token的中间件 将jwt字符串还原为JSON对象在get请求时可以获得用户信息 安装express-jwt npm i express-jwt 导入 / 导入解析token字符串 const exoressjwt require(express-jwt) 解析token // 使用 .unless({ path: [/^\/api\//] }) 指定哪些接口不需要进行 Token 的身份认证 app.use(expressjwt.expressjwt({secret:jwtSecreKey,algorithms:[HS256], }).unless({path:[/^\/api\//]})) 配置捕获错误中间件 // 错误中间件 app.use(function (err, req, res, next) {// 数据验证失败if (err instanceof joi.ValidationError) return res.send({status:1,message:err.message})// 捕获身份认证失败的错误if (err.name UnauthorizedError) return res.send({satus:1,message:身份认证失败})// 未知错误res.send({status:1,message:err.message})}) 完整的登录接口代码 // 导入express模块 const express require(express) // 导入数据库对象 const db require(../db/index)// 导入加密模块 const bcrypt require(bcryptjs)// 创建路由对象 const router express.Router()// 导入JWT const jwt require(jsonwebtoken) // 定义密钥 const jwtSecreKey notbald// 登录接口 router.post(/login,(req,res){const userinfo req.bodyconst sql select * from ev_users where username ?db.query(sql, userinfo.username, function (err, results) {// 执行 SQL 语句失败if (err) {return res.send({status:1,message:err.message})}// 执行 SQL 语句成功但是查询到数据条数不等于 1if (results.length ! 1) {return res.send({status:1,message:登录失败})}// 判断密码是否正确const compareResult bcrypt.compareSync(userinfo.password,results[0].password)if(!compareResult) return res.send({status:1,message:密码错误})// 生成token字符串展开运算符剔除密码和用户头像const user {...results[0],password:,user_pic:}// console.log(user);// 生成 Token 字符串const tokenStr jwt.sign(user, jwtSecreKey, {expiresIn: 10h, // token 有效期为 10 个小时})res.send({status: 0,message: 登录成功,// 为了方便客户端使用 Token在服务器端直接拼接上 Bearer 的前缀token: Bearer tokenStr,})}) }) 解析token以及全局捕获错误中间件在服务器中
http://www.dnsts.com.cn/news/38224.html

相关文章:

  • 宁波做网站优化哪家好推广app注册一个一般多少钱
  • 网站定制哪个好移动网站 模板
  • 济南网站建设内容哔哩哔哩官方网站首页
  • 网站建设整体方案网站当前链接
  • 手机网站WordPress主题wordpress文章怎么分页
  • 青岛谁优化网站做的好处李勇seo博客
  • 什么是网站的推广开发公司合作协议
  • 合肥专业建设网站免费建站系统下载
  • 上饶营销网站建设iis7 wordpress
  • 宁波网站建设优化企业怎么建设和聚享游一样的网站呢
  • wordpress站内全文检索o2o网站建设机构
  • 网站建设的计划深圳设计公司办公室
  • 六年级做的网站的软件下载hexo wordpress 区别
  • 哪些公司做外贸网站青州哪里做网站
  • 网站的程序有哪些内容张家港专业的网站制作公司
  • 海外购物网站上填手机号码怎么做软件开发专业词汇
  • 模板网站开发怎么在建设银行网站挂号
  • 适合seo的网站小程序企业网站
  • 东莞h5网站开发wordpress wp_redirect
  • 太原网站怎么做seo自己怎么在网上注册公司
  • 为什么说新浪的门户网站做的好智慧园区建设总体方案
  • 青海做网站哪家好58同城网站模板
  • 西安市网站制作公司企业微网站建设
  • 什么是网站降权处理专业的app开发制作公司
  • 网站需要怎么做的俄罗斯ip地址
  • 网站建设开发案例教程视频教程做网站静态和动态
  • 做网站域名怎么选有利于seo网站建设平台流程
  • 手机网站导航设计wordpress文章默认模板名叫什么
  • 360元网站建设wordpress赞助功能
  • 网站建设q-9中国50强企业管理培训机构