【前端——Node.js】:身份认证
一、前后端身份认证
1.web开发者模式
(1)服务端渲染的Web开发模式
(2)前后端分离的web开发模式
选择:
2.身份认证
身份认证:又称身份验证、鉴权,是指通过一定的手段,完成对用户的身份确认。
不同开发模式下的身份认证:
3.Session认证机制
(1)HTTP协议的无状态性
HHTP协议的无状态性,指的是客户端的每次HTTP请求都是独立的,连续多个请求之间没有直接的关系,服务器不会主动保留每次HTTP请求的状态
(2)突破HTTP无状态的限制——Cookie
cookie:是存储在用户浏览器中的一段不超过4KB的字符串。它由一个名称(Name),一个值 (Value)和其他几个用于控制Cookie有效期、安全性、使用范围的可选属性组成。
不同域名下的Cookie各自独立,每当客户端发起请求时,会自动把当前 域名下所有未过期的Cookie一同发送到服务器
Cookie特性:①自动发送 ②域名独立 ③过期时限 ④4KB限制
(3)Cookie在身份认证中的作用
(4)Cookie不具有安全性
由于Cookie是存储在浏览器当中的,而且浏览器也提供了读写Cookie的API,因此Cookie很容易被伪造,不具有安全性。因此不建议服务器将重要的隐私数据,通过Cookie的形式发送给浏览器。
(5)Session的工作原理
4.在Express中使用Session认证
(1)安装express-session中间件
(2)配置express-session中间件
需要通过app.use()来注册session中间件
const session=require('express-session')app.use(session({secret:'myself',//secrect属性的值可以为任意字符串resave:false,//固定写法saveUninitialized:true,//固定写法}))
(3)向session中存数据
当express-session中间件配置成功之后,即可通过热情。session来访问和使用session对象,从而存储用户的关键信息。
//登录API接口
app.post('/api/login',(req,res)=>{//判断用户提交的登录信息是否正确if(req.body.username!=='admin'||req.body.password!=='00000'){return res.send({ status:1, msg:'登陆失败'})}//TODO_02:请将登陆成功后的用户信息,保存到session中
//只有成功配置了express-session这个中间件之后,才能通过req点出来session这个属性。
//这里user的位置就是我们自己定义的,想变成什么都可以req.session.user=req.body // 用户信息存储到session中req.session.islogin=true // 将用户的登陆状态,存储到session中return res.send({ status:0, msg:'登陆成功'})
})
(4)从session中取数据
可以直接从req.session对象上获取之前存储的数据
//获取用户姓名的接口
app.get('/api/username',(req,res)=>{//TODO_03:请从session中获取用户的名称,响应给客户端//先判断用户是否登录if(!req.session.islogin){return res.send({status:1, msg:'fail'})}res.send({status: 0,msg:'success',username:req.session.user.username,})
})
(5)清空session
调用:req.session.destroy()函数,即可清空服务器保存的session信息。注意!注会清空当前session,不会影响其他session
//退出登录的接口
app.post('/api/logout',(req,res)=>{//TODO_04:清空session信息req.session.destory()res.send({status:0,msg:'退出登录'})
5.JWT认证机制
(1)了解session认证的局限性
(2)认识JWT(JSON Web Token)
是目前最流行的跨域认证解决方案
(3)JWT的组成部分
JWT通常由三部分组成:Header(头部),Payload(有效荷载),Si给nature(签名)
(4)JWT的使用方式
6.在Express中使用JWT
(1)安装JWT相关的包
(2)导入JWT相关的包
(3)定义serect密钥
(4)登陆成功后生成JWT字符串
调用jsonwebtoken包提供的sign()方法,将用户信息加密成JWT字符串,响应给客户端
(5)将JWT字符串还原为JSON对象
(6)使用req.user获取用户信息
(7)捕获解析JWT失败后产生的错误
【前端——Node.js】:身份认证相关推荐
- 选择适合的Node js授权认证策略
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 选择适合 ...
- 【前端——Node.js】:Express、数据库与身份认证
一.Express 1.express路由 (1)路由 路由就是映射关系.在Express中,路由是指客户端的请求与服务器处理函数之间的映射关系 (2)路由匹配的过程 (3)模块化路由 为了方便对路由 ...
- 选择适合的Node.js授权认证策略
英文原文:https://stormpath.com/blog/choosing-nodejs-authentication-strategy/ Node.js正在兴起!2010年就开始使用Node工 ...
- [前端] Node.js + Web Socket 打造即时聊天程序嗨聊
前端一直是一块充满惊喜的土地,不仅是那些富有创造性的页面,还有那些惊赞的效果及不断推出的新技术.像node.js这样的后端开拓者直接将前端人员的能力扩大到了后端.瞬间就有了一统天下的感觉,来往穿梭于前 ...
- 前端Node.js面试题
一.Node基础概念 1.1 Node是什么 Node.js 是一个开源与跨平台的 JavaScript 运行时环境.在浏览器外运行 V8 JavaScript 引擎(Google Chrome 的内 ...
- java-初识大前端Node.js、ES6、Npm、Babel、模块化规范、WebPack、Vue-element-admin本地安装问题及解决、Git安装及配置、uni-app
VS code安装 安装成功 配置自动补齐Emment Node.js node.js下载网址: http://nodejs.cn/ 安装成功! 概念 Node.js发布于2009年5月,由Ryan ...
- java开发小菜鸟初遇前端node.js
这就是有的时候我们要设置path路径,有的时候使用编译环境之后就不需要再设置path环境变量的原因: cmd :命令窗口 终端 dir 列出当前目录下的文件 cd 进入到指定的文件 md 创建文件夹 ...
- 使用前端node.js 提供的服务器live-server
步骤: 安装node.js的版本控制工具nvm,在终端中执行 curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/in ...
- Node.js基金会官方的开发者认证准备就绪
Node.js基金会正在为新的Node.js开发者认证(Developer Certification)做最后的准备工作,该认证计划于十二月推出. \\ 新推出的认证可能将采用一种不同于开发人员习以为 ...
最新文章
- 【论文速读】城市自动驾驶应用的概率语义地图
- threading模块使用_threading简介(创建多线程的两种方法)★
- Android 软键盘的全面解析,让你不再怕控件被遮盖
- 敏捷开发绩效管理之四:为团队设立外部绩效目标(目标管理,外向型绩效)...
- 我为什么要使用Webpack?
- 【工具推荐】个人本地 markdown 知识图谱软件 Obsidian
- 博弈论模型(巴什博弈)
- pytorch修改图片尺寸大小
- 计算机类的竞赛一般多会报,2017自主招生报考条件建议65问,涵盖所有问题!...
- 蓝桥杯【学做菜】Java
- 京东商品详情数据接口(APP端,H5端),实时了解商品价格走势,接口代码教程
- python 一元二次方程计算器
- 【Minecraft java edition 模组开发】(二):通过对岩浆怪和雪傀儡的源码分析,自己制作一个雪球怪
- 淘宝账号 支付宝账号 阿里旺旺账号
- matlab 二元微分方程组,求助,matlab求解二元二阶的常微分方程组
- arcgis把jpg转成栅格图像_]在ArcGIS中配准(TIF、JPEG)栅格图像并矢量化(转)
- Discuz!教程之门户列表页文章中无图片时,从图库中选择一张作为封面
- JavaScript中数组indexOf()增强版,返回所有匹配索引的数组
- Wireshark分析实际报文理解SSL(TLS)协议
- 通过 磁带机 备份 恢复数据 --201308
热门文章
- java用ssm框架开发的空气质量检测系统源码网站实战项目
- 神奇的二进制转换和运算
- 将Hexo个人博客部署到个人云服务器--最详细踩坑教程
- 一、EulerOS 操作系统入门
- FTP:vsftpd中的local_umask和anon_umask
- 从键盘输入n个数 求其中的最大数
- 谷歌人工智能产生自我意识了!聊天记录曝光!机器真的只是机器吗?
- AIDE手机编程初级教程(零基础向) 1.2 初识界面编程
- MYSQL登录错误:mysqladmin: connect to server at 'localhost' failed acess denied for user 'root'@'localhos
- 三阶魔方大中小魔公式_三阶魔方的入门玩法教程|魔方玩法|魔方视频教程|魔方公式图解|--想成为魔方高手就来魔方乐园吧...