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

杭州网站建设工作室室内装饰设计师证书

杭州网站建设工作室,室内装饰设计师证书,抖音代运营收费标准参考,浙江做网站公司排名目录 1 Node 操作 mysql1.2 操作 mysql 数据库 2 Web 开发模式2.1 服务端渲染2.2 前后端分离2.3 如何选择 3 身份认证3.1 Session 认证机制3.2 JWT 认证机制 1 Node 操作 mysql 数据库和身份认证 配置 mysql 模块 安装 mysql 模块 npm install mysql建立连接 const mysql … 目录 1 Node 操作 mysql1.2 操作 mysql 数据库 2 Web 开发模式2.1 服务端渲染2.2 前后端分离2.3 如何选择 3 身份认证3.1 Session 认证机制3.2 JWT 认证机制 1 Node 操作 mysql 数据库和身份认证 配置 mysql 模块 安装 mysql 模块 npm install mysql建立连接 const mysql require(mysql)const db mysql.createPool({host: 127.0.0.1,user: root,password: root,database: test, })测试是否正常工作 db.query(select 1, (err, results) {if (err) return console.log(err.message)console.log(results) })1.2 操作 mysql 数据库 查询数据 db.query(select * from users, (err, results) {... })插入数据 // ? 表示占位符 const sql insert into users values(?, ?) // 使用数组的形式为占位符指定具体的值 db.query(sql, [username, password], (err, results) {if (err) return console.log(err.message)if (results.affectedRows 1) console.log(插入成功) })向表中新增数据时如果数据对象的每个属性和数据表的字段一一对应则可以通过如下方式快速插入数据 const user {username:Bruce, password:55520} const sql insert into users set ? db.query(sql, user, (err, results) {... })更新数据 const sql update users set username?, password? where id? db.query(sql, [username, password, id], (err, results) {... })快捷方式 const user {id:7,username:Bruce,password:55520} const sql update users set ? where id? db.query(sql, [user, user.id], (err, results) {... })删除数据 const sql delete from users where id? db.query(sql, id, (err, results) {... })使用 delete 语句会真正删除数据保险起见使用标记删除的形式模拟删除的动作。即在表中设置状态字段标记当前的数据是否被删除。 db.query(update users set status1 where id?, 7, (err, results) {... })2 Web 开发模式 2.1 服务端渲染 服务器发送给客户端的 HTML 页面是在服务器通过字符串的拼接动态生成的。因此客户端不需要使用 Ajax 额外请求页面的数据。 app.get(/index.html, (req, res) {const user { name: Bruce, age: 29 }const html h1username:${user.name}, age:${user.age}/h1res.send(html) })优点 前端耗时短。浏览器只需直接渲染页面无需额外请求数据。有利于 SEO。服务器响应的是完整的 HTML 页面内容有利于爬虫爬取信息。 缺点 占用服务器资源。服务器需要完成页面内容的拼接若请求比较多会对服务器造成一定访问压力。不利于前后端分离开发效率低。 2.2 前后端分离 前后端分离的开发模式依赖于 Ajax 技术的广泛应用。后端只负责提供 API 接口前端使用 Ajax 调用接口。 优点 开发体验好。前端专业页面开发后端专注接口开发。用户体验好。页面局部刷新无需重新请求页面。减轻服务器的渲染压力。页面最终在浏览器里生成。 缺点 不利于 SEO。完整的 HTML 页面在浏览器拼接完成因此爬虫无法爬取页面的有效信息。Vue、React 等框架的 SSRserver side render技术能解决 SEO 问题。 2.3 如何选择 企业级网站主要功能是展示没有复杂交互且需要良好的 SEO可考虑服务端渲染后台管理项目交互性强无需考虑 SEO可使用前后端分离为同时兼顾首页渲染速度和前后端分离开发效率可采用首屏服务器端渲染其他页面前后端分离的开发模式 3 身份认证 3.1 Session 认证机制 服务端渲染推荐使用 Session 认证机制 Session 工作原理 Express 中使用 Session 认证 安装 express-session 中间件 npm install express-session配置中间件 const session require(express-session) app.use(session({secret: Bruce, // secret 的值为任意字符串resave: false,saveUninitalized: true,}) )向 session 中存数据 中间件配置成功后可通过 req.session 访问 session 对象存储用户信息 app.post(/api/login, (req, res) {req.session.user req.bodyreq.session.isLogin trueres.send({ status: 0, msg: login done }) })从 session 取数据 app.get(/api/username, (req, res) {if (!req.session.isLogin) {return res.send({ status: 1, msg: fail })}res.send({ status: 0, msg: success, username: req.session.user.username }) })清空 session app.post(/api/logout, (req, res) {// 清空当前客户端的session信息req.session.destroy()res.send({ status: 0, msg: logout done }) })3.2 JWT 认证机制 前后端分离推荐使用 JWTJSON Web Token认证机制是目前最流行的跨域认证解决方案 JWT 工作原理 Session 认证的局限性 Session 认证机制需要配合 Cookie 才能实现。由于 Cookie 默认不支持跨域访问所以当涉及到前端跨域请求后端接口的时候需要做很多额外的配置才能实现跨域 Session 认证。当前端请求后端接口不存在跨域问题的时候推荐使用 Session 身份认证机制。当前端需要跨域请求后端接口的时候不推荐使用 Session 身份认证机制推荐使用 JWT 认证机制 JWT 工作原理图 用户的信息通过 Token 字符串的形式保存在客户端浏览器中。服务器通过还原 Token 字符串的形式来认证用户的身份。 JWT 组成部分 Header、Payload、SignaturePayload 是真正的用户信息加密后的字符串Header 和 Signature 是安全性相关部分保证 Token 安全性三者使用 . 分隔 Header.Payload.SignatureeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTcsInVzZXJuYW1lIjoiQnJ1Y2UiLCJwYXNzd29yZCI6IiIsIm5pY2tuYW1lIjoiaGVsbG8iLCJlbWFpbCI6InNjdXRAcXEuY29tIiwidXNlcl9waWMiOiIiLCJpYXQiOjE2NDE4NjU3MzEsImV4cCI6MTY0MTkwMTczMX0.bmqzAkNSZgD8IZxRGGyVlVwGl7EGMtWitvjGD-a5U5cJWT 使用方式 客户端会把 JWT 存储在 localStorage 或 sessionStorage 中此后客户端与服务端通信需要携带 JWT 进行身份认证将 JWT 存在 HTTP 请求头 Authorization 字段中加上 Bearer 前缀 Authorization: Bearer tokenExpress 使用 JWT 安装 jsonwebtoken 用于生成 JWT 字符串express-jwt 用于将 JWT 字符串解析还原成 JSON 对象 npm install jsonwebtoken express-jwt定义 secret 密钥 为保证 JWT 字符串的安全性防止其在网络传输过程中被破解需定义用于加密和解密的 secret 密钥生成 JWT 字符串时使用密钥加密信息得到加密好的 JWT 字符串把 JWT 字符串解析还原成 JSON 对象时使用密钥解密 const jwt require(jsonwebtoken) const expressJWT require(express-jwt)// 密钥为任意字符串 const secretKey Bruce生成 JWT 字符串 app.post(/api/login, (req, res) {...res.send({status: 200,message: 登录成功,// jwt.sign() 生成 JWT 字符串// 参数用户信息对象、加密密钥、配置对象-token有效期// 尽量不保存敏感信息因此只有用户名没有密码token: jwt.sign({username: userInfo.username}, secretKey, {expiresIn: 10h})}) })JWT 字符串还原为 JSON 对象 客户端访问有权限的接口时需通过请求头的 Authorization 字段将 Token 字符串发送到服务器进行身份认证服务器可以通过 express-jwt 中间件将客户端发送过来的 Token 解析还原成 JSON 对象 // unless({ path: [/^\/api\//] }) 指定哪些接口无需访问权限 app.use(expressJWT({ secret: secretKey }).unless({ path: [/^\/api\//] }))获取用户信息 当 express-jwt 中间件配置成功后即可在那些有权限的接口中使用 req.user 对象来访问从 JWT 字符串中解析出来的用户信息 app.get(/admin/getinfo, (req, res) {console.log(req.user)res.send({status: 200,message: 获取信息成功,data: req.user,}) })捕获解析 JWT 失败后产生的错误 当使用 express-jwt 解析 Token 字符串时如果客户端发送过来的 Token 字符串过期或不合法会产生一个解析失败的错误影响项目的正常运行通过 Express 的错误中间件捕获这个错误并进行相关的处理 app.use((err, req, res, next) {if (err.name UnauthorizedError) {return res.send({ status: 401, message: Invalid token })}res.send({ status: 500, message: Unknown error }) })
http://www.pierceye.com/news/438074/

相关文章:

  • 网站制作工作室24小时接单一起做网站
  • 专业购物网站建设多少钱搜索引擎推广的基本方法
  • 高端手机网站建设需要多少钱五金制品东莞网站建设
  • 网站运营与维护是什么意思出入成都最新规定今天
  • 网站建设 企炬江阴企业形象包装公司
  • 移动网站开发公司免费的视频网站推广软件
  • 深圳网站定制公司宝应网站建设
  • 哈尔滨 做网站公司淮南发布app下载
  • 能发朋友圈的网站建设语不同类型网站比较及网站域名设计
  • 企业融资只有两种方法seo包括网站建设吗
  • 网站制作简单协议深圳市宝安区中医院
  • 中山骏域网站建设求2021没封的良心网站
  • 域名空间网站建设要多少钱全屋定制设计流程
  • 建设网站的网站江苏旅游网站开发设计与实现
  • 河北辛集住房和城乡建设厅网站购车网站开发数据库er图
  • 简单flash个人网站网站服务器和直播服务器一样吗
  • 教育网站建设需求文档门户网站系统建设清单
  • 天津市建设与管理局网站建筑网建设通平台
  • 长沙网站开发微联讯点官网微信公众号直接同步到wordpress
  • 湖南建设监理官方网站属于网页制作平台的是?
  • 如何建设公司网站知乎湖南自驾旅游与房车协会
  • 扬中网站优化做 爱 网站视频教程
  • 服务器发布网站免费网络营销推广软件
  • 婚纱摄影类网站重庆seo招聘
  • 登陆空间商网站建站模板免费下载
  • 用php做网站用什么框架牡丹江免费发布信息的平台
  • 网站开发 专有名词江油移动网站建设
  • 百度后台管理东莞市长安镇网站制作优化
  • 长春市建设厅网站大自然的网站设计
  • 网站建设能用手机制作吗人人车网站建设费用