一、前后端身份认证

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】:身份认证相关推荐

  1. 选择适合的Node js授权认证策略

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 选择适合 ...

  2. 【前端——Node.js】:Express、数据库与身份认证

    一.Express 1.express路由 (1)路由 路由就是映射关系.在Express中,路由是指客户端的请求与服务器处理函数之间的映射关系 (2)路由匹配的过程 (3)模块化路由 为了方便对路由 ...

  3. 选择适合的Node.js授权认证策略

    英文原文:https://stormpath.com/blog/choosing-nodejs-authentication-strategy/ Node.js正在兴起!2010年就开始使用Node工 ...

  4. [前端] Node.js + Web Socket 打造即时聊天程序嗨聊

    前端一直是一块充满惊喜的土地,不仅是那些富有创造性的页面,还有那些惊赞的效果及不断推出的新技术.像node.js这样的后端开拓者直接将前端人员的能力扩大到了后端.瞬间就有了一统天下的感觉,来往穿梭于前 ...

  5. 前端Node.js面试题

    一.Node基础概念 1.1 Node是什么 Node.js 是一个开源与跨平台的 JavaScript 运行时环境.在浏览器外运行 V8 JavaScript 引擎(Google Chrome 的内 ...

  6. 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 ...

  7. java开发小菜鸟初遇前端node.js

    这就是有的时候我们要设置path路径,有的时候使用编译环境之后就不需要再设置path环境变量的原因: cmd :命令窗口 终端 dir 列出当前目录下的文件 cd 进入到指定的文件 md 创建文件夹 ...

  8. 使用前端node.js 提供的服务器live-server

    步骤: 安装node.js的版本控制工具nvm,在终端中执行 curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/in ...

  9. Node.js基金会官方的开发者认证准备就绪

    Node.js基金会正在为新的Node.js开发者认证(Developer Certification)做最后的准备工作,该认证计划于十二月推出. \\ 新推出的认证可能将采用一种不同于开发人员习以为 ...

最新文章

  1. 【论文速读】城市自动驾驶应用的概率语义地图
  2. threading模块使用_threading简介(创建多线程的两种方法)★
  3. Android 软键盘的全面解析,让你不再怕控件被遮盖
  4. 敏捷开发绩效管理之四:为团队设立外部绩效目标(目标管理,外向型绩效)...
  5. 我为什么要使用Webpack?
  6. 【工具推荐】个人本地 markdown 知识图谱软件 Obsidian
  7. 博弈论模型(巴什博弈)
  8. pytorch修改图片尺寸大小
  9. 计算机类的竞赛一般多会报,2017自主招生报考条件建议65问,涵盖所有问题!...
  10. 蓝桥杯【学做菜】Java
  11. 京东商品详情数据接口(APP端,H5端),实时了解商品价格走势,接口代码教程
  12. python 一元二次方程计算器
  13. 【Minecraft java edition 模组开发】(二):通过对岩浆怪和雪傀儡的源码分析,自己制作一个雪球怪
  14. 淘宝账号 支付宝账号 阿里旺旺账号
  15. matlab 二元微分方程组,求助,matlab求解二元二阶的常微分方程组
  16. arcgis把jpg转成栅格图像_]在ArcGIS中配准(TIF、JPEG)栅格图像并矢量化(转)
  17. Discuz!教程之门户列表页文章中无图片时,从图库中选择一张作为封面
  18. JavaScript中数组indexOf()增强版,返回所有匹配索引的数组
  19. Wireshark分析实际报文理解SSL(TLS)协议
  20. 通过 磁带机 备份 恢复数据 --201308

热门文章

  1. java用ssm框架开发的空气质量检测系统源码网站实战项目
  2. 神奇的二进制转换和运算
  3. 将Hexo个人博客部署到个人云服务器--最详细踩坑教程
  4. 一、EulerOS 操作系统入门
  5. FTP:vsftpd中的local_umask和anon_umask
  6. 从键盘输入n个数 求其中的最大数
  7. 谷歌人工智能产生自我意识了!聊天记录曝光!机器真的只是机器吗?
  8. AIDE手机编程初级教程(零基础向) 1.2 初识界面编程
  9. MYSQL登录错误:mysqladmin: connect to server at 'localhost' failed acess denied for user 'root'@'localhos
  10. 三阶魔方大中小魔公式_三阶魔方的入门玩法教程|魔方玩法|魔方视频教程|魔方公式图解|--想成为魔方高手就来魔方乐园吧...