node.js的token、path模块,multer中间件和两种模板引擎
Token 思想
在服务端不需要存储用户的登陆记录 全部发给客户端由客户端自己存 (cookie localstorage)
1、客户端使用用户名跟密码请求登录
2、服务端收到请求,去验证用户名与密码
3、验证成功后,服务端会签发一个Token (加了密的字符串),再把这个Token发送给客户端
4、客户端收到Token以后可以把它存储起来,比如放在Cookie里或者Local Storage里
5、客户端每次向服务端请求资源的时候需要带着服务端签发的Token
6、服务端收到请求,然后去验证客户端请求里面带着的Token,如果验证成功,就向客户端返回请求的数据
用Token 需要安装一个模块
token的使用
效验 token
Session 和Token 的区别
- 服务端保存用户信息 session 会保存 token不保存
- session 不可以 避免SCRF攻击
- token 可以避免SCRF攻击
- session安全性 一般 token 安全性高
- session 存在多服务器粘性问题 token 不存在
Node中的非模块成员
在每个模块中 除了 require exports 等模块外
还有两个特殊成员 (都是动态获取)
- __dirname
获取当前文件模块所属目录的绝对路径 - __filename
获取当前文件的绝对路径
Node 文件操作路径中 相对路径是根据执行node命令所处的路径
解决方法 用绝对路径
path.join( __dirname 来拼接路径 )
Path 模块
-
path 模块 (内置模块) 操作系统的磁盘路径
-
path.join( 路径1 ,路径2, …)
按参数顺序把多个路径组成到一起 并返回 -
path.parse(路径字符串)
能把路径字符串转成对象并返回
ext 是文件后缀名
name 文件 不含后缀名 -
path.basename( 路径 , 选填 )
第二个参数选填 如果传个 .js 就 可以省略 .js 后缀名
能获取到 第一个参数的 文件名部分 忽略 路径 -
path.dirname( 路径)
获取一个路径中的目录部分 -
path.extname ( 路径 )
获取一个路径中的 后缀名部分 -
path.isAbsolute( 路径)
判断这个路径是不是绝对路径 -
path.resolve()
可以像path.join() 一样拼接字符串,也可以直接传完整路径
如果传的参数不带盘符那么就会按 __dirname 来算
会从右向左 寻找盘符 如果找到盘符 那么盘符之前的路径片段会忽略
文件上传 (multer 中间件)
multer 接受 form-data 编码数据 所有要求前端携带时注意一下 如:
安装
使用和配置
Jade 模板
原理:
- fs抓取前端静态页面+ jade +数据-> 返回send(data) >浏览器
特点:
- 侵入式,强依赖
安装
配置和使用
ejs模板
原理
- fs抓取前端静态页面+ jade +数据-> 返回send(data) >浏览器
特点
- 非侵入式,温和,弱依赖
安装
配置和使用
0|1EJS 模板基础语法
<% … %> 包含js代码
- <%= … %> 输出变量 变量若包含 ‘<’ ‘>’ '&'等字符 会被转义
- <%- … %> 输出变量 不转义
- <%- include(‘其他模板名’) %> 引入其他模板 包含 ./user/show.ejs
- <%# some comments %> 注释标签,不会输出,也不会执行
- <%% 转义为 ‘<%’
- <% … -%> 删除新的空白行模式
- <%_ … _%> 删除前后空白符模式
__EOF__
作 者:智勇_y
出 处:https://www.cnblogs.com/blender-su/p/17758295.html
关于博主:编程路上的小学生,热爱技术,喜欢专研。评论和私信会在第一时间回复。或者直接私信我。
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文来自博客园,作者:智勇_y,转载请注明原文链接:https://www.cnblogs.com/blender-su/p/17758295.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通