首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么(passport)中间件函数与app.get一起触发,而不与app.post一起触发

在Express框架中,passport是一个非常流行的身份验证中间件,用于处理用户认证和授权。它提供了一种简单而灵活的方式来实现用户身份验证,并且可以与不同的身份验证策略(例如本地策略、OAuth策略等)进行集成。

在Express应用程序中,我们可以使用app.get和app.post方法来定义路由处理程序。这两个方法分别用于处理HTTP GET和POST请求。当客户端发送一个GET请求时,Express会调用与该路由匹配的app.get处理程序。同样地,当客户端发送一个POST请求时,Express会调用与该路由匹配的app.post处理程序。

passport中间件函数与app.get一起触发的原因是,通常在用户进行身份验证时,我们会使用GET请求来获取登录页面或者其他相关信息。当用户提交登录表单时,我们会使用POST请求来处理用户提交的数据,并进行身份验证。因此,passport中间件函数通常与app.get一起使用,以便在用户访问登录页面时进行身份验证的相关处理。

然而,passport中间件函数并不与app.post一起触发的原因是,身份验证通常在用户提交登录表单时进行,而不是在访问登录页面时进行。当用户提交登录表单时,Express会调用与该POST请求匹配的app.post处理程序,而不是passport中间件函数。在app.post处理程序中,我们可以使用passport.authenticate方法来执行身份验证逻辑。

总结起来,passport中间件函数与app.get一起触发是因为通常在用户访问登录页面时进行身份验证的相关处理,而不与app.post一起触发是因为身份验证通常在用户提交登录表单时进行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用Node.js实现一个express框架

express默认引入调用后返回一个app对象 app.listen 会启动进程监听端口 每次收到请求,对应的url和method会触发相应挂载在app上对应的回调函数 调用 next 方法,会触发下一个...,这个是 createServer 原生模块帮我们封装好的 实现接收到请求触发 实现app.get app.post等方法 目前我们接受到响应,就会触发 cb 这个回调函数,那我们打印下,看看是什么参数...完成最重要的中间件功能 首先要知道,express中间件分两种,一种带路由的,那就是根据路由决定是否触发 另外一种就是不带路由的,像静态资源这种....handleAddRouter,如果是 path 为空的中间件,直接传入函数的,那么 path 帮它设置成'/' 我们还遗留了一个点,next的实现,因为我们现在加了all这个数组后,意味着可能有多个中间件...我们的技术团队也会不断产出原创文章, 一起见证各位的成长

83610
  • Node.js—Express使用、Express 路由 、Express 中间件、托管静态资源、使用 Express 写接口、node.js链接sqlite数据库

    Express中的路由 在 Express 中,路由指的是客户端的请求服务器处理函数之间的映射关系。...Express 中间件的格式 注意:中间件函数的形参列表中,必须包含 next 参数,路由处理函数中只包含 req 和 res。...通过app.use()或app.get()或 app.post(),绑定到app实例上的中间件,叫做应用级别的中间件,代码示例如下: 路由级别的中间件 绑定到express.Router()实例上的中间件...使用步骤如下: 运行npm install body-parser安装中间件 使用require导入中间件 调用app.use()注册并使用中间件 自定义中间件 需求描述实现步骤 自己手动模拟一个类似于...将自定义的中间件函数注册为全局可用的中间件 app.use(custonBodyParser) app.post('/user',(req,res) => { res.send('ok')

    1.1K32

    Node.js学习笔记——Express、路由、中间件、接口跨域解决方案详解(附实例)

    能,使用 Node.js 提供的原生 http 模块即可 有了 http 内置模块,为什么还有用 Express?...中间件的格式 Express 的中间件,本质上就是一个 function 处理函数,Express 中间件的格式如下 注意:中间件函数的形参列表中,必须包含 next 参数,路由处理函数中只包含 req...和 res next 函数的作用 next 函数是实现多个中间件连续调用的关键,它表示把流转关系转交给下一个中间件或路由 中间件初体验 全局生效的中间件:是客户端发起的任何请求,达到服务器之后,都会触发中间件...console.log('这是最简单的中间件函数') // next() // }) app.get('/', (req, res) => { console.log('调用了 / 这个路由'...Express 内置的中间件 第三方的中间件 应用级别的中间件(就是一种叫法,没啥用) 通过 app.use() 或 app.get() 或 app.post() ,绑定到 app 实例上的中间件

    3.5K21

    Express中间件

    中间件(middleware)就是一个方法,一般情况下需携带next参数,express进行路由配置时的回调函数,但中间件在使用时,一般都是使用use方法。 一,中间件的作用。...客户端发起任何请求,到达服务器后,都会触发中间件,叫全局生效的中间件。 二,注意事项。 要在路由之前注册中间件。 可以连续调用多个中间件处理请求。...执行完中间件后,不要忘记调用next()函数。 防止代码混乱,next()后不要写额外代码了。 连续调用多个中间件时,多个中间件之间,共享req和res。...中间件可以绑定到reter实例上(路由级别),app中(应用级别)没有任何区别 三,定义全局中间件。...创建路由 app.get('/',mw,(req,res)=>{ res.send('home=') }) // 可以调用多个局部路由中间件, 也可以用 [mw,mw2] 包起来 app.get

    1.7K21

    Express中间件

    中间件主要由两部分构成,中间件方法以及请求处理函数中间件方法由Express提供,负责拦截请求,请求处理函数由开发人员提供,负责处理请求。...app.get('请求路径', '处理函数') // 接收并处理get请求 app.post('请求路径', '处理函数') // 接收并处理post请求 可以针对同一个请求设置多个中间件,对同一个请求进行多次处理...app.get('/request', (req, res, next) => { req.name = "张三"; next(); }); app.get('/request'..., (req, res) => { res.send(req.name); }); 2.2 app.use中间件用法 app.use 匹配所有的请求方式,可以直接传入请求处理函数,代表接收所有的请求...next) => { res.status(500).send('服务器发生未知错误'); }) 当程序出现错误时,调用next()方法,并且将错误信息通过参数的形式传递给next()方法,即可触发错误处理中间件

    1.2K30

    Express框架

    HTTP请求 拥有大量第三方中间件对功能进行扩展 1.3原生Node.jsExpress框架对比之路由 app.on('request', (req, res) => {     // 获取客户端的请求路径...中间件主要由两部分构成,中间件方法以及请求处理函数中间件方法由Express提供,负责扫截请求,请求处理函数由开发人员提供,负责处理请求。...app.get('请求路径','处理函数') // 接收并处理get请求 app.post('请求路径','处理函数') // 接收并处理post请求 可以针对同一个请求设置多个中间件,对同一个请求进行多次处理...next,权限控制函数 app.get('/request', (req,res,next) => { req.name = "张三"; next() ; }; app.get('/request...next) => { res.status(500).send('服务器发生未知错误'); }) 当程序出现错误时,调用next()方法,并且将错误信息通过参数的形式传递给next()方法,即可触发错误处理中间件

    1.7K30

    NodeJS背后的人:Express

    来发送文件下载响应,这个方法指定的文件作为附件发送给客户端,浏览器触发文件下载操作⬇️️ //下载响应 app.get('/resDownload',(req,res)=>{ //Express...,res,next)=>{console.log("中间件2"); next(); }); 路由中间件: 路由中间件特定路由相关联的中间件: http://127.0.0.1:5400/demo|1...|2 进行请求; //定义服务路由: //全局中间件不同,因为是针对部分路由,所以需要直接路由进行绑定; app.get('/demo',(req,res,next)=>{ console.log...ExpressServer 2'); }) 路由|全局中间件,本身其实都是普通的函数: (req,res,next)=>{···} 通过不同的方式进行绑定,即不同的效果; 直接路由进行绑定——路由中间件...('静态资源目录2')); //如果两个目录中都存在相同名称的文件,则优先使用定义的目录为准; 静态资源中间件——⚠️⚠️注意事项: 静态资源中间件专门为响应静态资源产生!!

    10110

    Express4.x API (一):application (译)

    所以,实际方法是app.get,app.post,app.put等等,下面有关于方法完整的表。 获取更多信息,请看routing guide。...这一段看了好几遍啦- -,理解next传递非常重要性") 本API文档把使用比较多的HTTP方法app.get(),app.post,app.put(),app.delete()作为一个个单独的项进行说明...他在所有请求方法的路径上加载中间件,其对于所有的方法都有效 app.param([name],callback) 给路由参数添加回调触发器,这里的name是参数名或者参数数组,function是回调方法...回调方法的参数按序是请求对象,响应对象,下个中间件,参数值和参数名。 如果name是数组,会按照各个参数在数组中被声明的顺序将回调触发器注册下来。...app.post(path, callback, [callback ...]) 使用指定的回调函数将HTTP POST请求路由到指定的路径。有关更多信息,请参见routing guide。

    3K100

    Node.js 路由的原理、使用方式以及一些常见的应用场景

    当收到一个 HTTP 请求时,Node.js 会通过解析请求的 URL 和请求方法,来确定应该执行哪个处理函数中间件。...running on port 3000');});在上面的例子中,app.get() 和 app.post() 分别表示处理 HTTP GET 和 POST 请求的路由。...中间件中间件是一种特殊的路由处理函数,它可以在请求到达目标处理函数之前,进行一些预处理操作。Express 支持使用中间件来实现各种功能,例如身份验证、请求日志记录等。...通过调用 next() 函数,可以将请求传递给下一个中间件或路由处理函数。路由组织和模块化对于大型的应用程序,路由通常会非常庞大复杂。为了保持代码的可读性和可维护性,我们可以将路由进行组织和模块化。...app.listen(3000, () => { console.log('Server running on port 3000');});在上面的例子中,我们创建了一个名为 users.js 的模块,其中包含了用户相关的路由处理函数

    68020

    node框架express的研究0.前言1. 从入口开始1.1入口1.2 proto1.2.1 app.init方法1.2.2 app.handle方法1.2.3 每一个method的处理1.2.4

    从入口开始 1.1入口 主入口是index.js,这个文件仅仅做了require引入express.js这一步,express.js暴露的主要的函数createApplication,我们平时的var...普通路由中间件 普通中间件:app.use,不管是什么请求方法,只要路径匹配就执行回调函数 路由中间件:根据HTTP请求方法的中间件,路径匹配和方法匹配才执行 所以有两种Layer: 普通中间件Layer...route对象的Layer实例layer是没有route变量的,有method对象,保存了HTTP请求类型,也就是带了请求方法的路由中间件。...所以Router类中的Layer实例对象是保存普通中间件的实例或者路由中间件的路由,Route实例对象route中的Layer实例layer是保存路由中间件的真正实例。 ?...Route类用于创建路由中间件,并且创建拥有多个方法(多个方法是指app.get('/page',f1,f2...)中的那堆回调函数f1、f2...)的layer(对于同一个路径app.getapp.post

    1.1K30

    node框架express的研究

    从入口开始 1.1入口 主入口是index.js,这个文件仅仅做了require引入express.js这一步,express.js暴露的主要的函数createApplication,我们平时的var...普通路由中间件 普通中间件:app.use,不管是什么请求方法,只要路径匹配就执行回调函数 路由中间件:根据HTTP请求方法的中间件,路径匹配和方法匹配才执行 所以有两种Layer: 普通中间件Layer...路由中间件Layer,保存name和回调函数,route还会创建一个route对象 还有,中间件有父子之分: RouterRoute Router类的Layer实例对象layer.route为undefined...所以Router类中的Layer实例对象是保存普通中间件的实例或者路由中间件的路由,Route实例对象route中的Layer实例layer是保存路由中间件的真正实例。...Route类用于创建路由中间件,并且创建拥有多个方法(多个方法是指app.get('/page',f1,f2...)中的那堆回调函数f1、f2...)的layer(对于同一个路径app.getapp.post

    94020

    Express框架

    请求 拥有大量第三方中间件对功能进行扩展 1.3 原生Node.jsExpress框架对比之路由 ?...1.4 原生Node.jsExpress框架对比之获取请求参数 ? 1.5 Express初体验 使用Express框架创建web服务器及其简单,调用express模块返回的函数即可。...中间件 2.1 什么是中间件 中间件就是一堆方法,可以接收客户端发来的请求、可以对请求做出响应,也可以将请求继续交给下一个中间件继续处理。 ? 中间件主要由两部分构成,中间件方法以及请求处理函数。...中间件方法由Express提供,负责拦截请求,请求处理函数由开发人员提供,负责处理请求。 ? 可以针对同一个请求设置多个中间件,对同一个请求进行多次处理。...错误处理中间件是一个集中处理错误的地方。 ? 当程序出现错误时,调用next()方法,并且将错误信息通过参数的形式传递给next()方法,即可触发错误处理中间件。 ?

    1.8K20

    手写Express.js源码

    app.get,这是处理路由的API,类似的还有app.post等。 app.use,这是中间件的调用入口,所有中间件都要通过这个方法来调用。..._router的赋值有多个地方,一个地方就是HTTP动词处理方法上,比如我们用到的app.get或者app.post。...无论是app.get还是app.post都是调用的router方法来处理,所以可以统一用一个循环来写这一类的方法。...绕了一大圈,其实就是JS面向对象的使用,给router添加类方法,但是为什么使用这么绕的方式,不是像我上面那个Class那样用呢?这我就不是很清楚了,可能有什么历史原因吧。...当我们写app.getapp.post这些方法时,其实就是在router上添加layer和route。当一个网络请求过来时,其实就是遍历layer和route,找到对应的handle拿出来执行。

    5.4K30

    请求上传文件,Session简介,Restful API,Nodemon

    作者 | Jeskson 来源 | 达达前端小酒馆 请求上传文件 GET请求和POST请求 const express = require('express'); const app = express...HTTP服务器 app.listen(8080, function(){ console.log('express') }); POST请求借助body-parser模板引擎以及req.body()函数得到参数...name='+name+",pswd="+pswd); }); app.listen(8080, function(){ console.log('express'); }); 上传文件 用multer中间件进行上传文件...true, saveUninitialized: true })) cookie和session的区别: cookie是将用户的数据写给用户的浏览器,在浏览器端保持状态数据,当访问服务器时,传输数据量大,负担大...~ 大前端开发,定位前端开发技术栈博客,PHP后台知识点,web全栈技术领域,数据结构算法、网络原理等通俗易懂的呈现给小伙伴。谢谢支持,承蒙厚爱!!!

    1.6K20

    fastapi 请求文件 表单 处理错误 路径操作配置 jsonable_encoder

    请求表单文件 4. 处理错误 5. 自定义响应头 6. 自定义异常处理器 7. 覆盖默认异常处理器 8. 使用 RequestValidationError 的请求体 9....更好用 1.存储在内存里的文件超出上限,FastAPI 会将其存入磁盘,大型文件不会用尽所有内存 2.可获取上传文件的元数据 3.自带 file-like async 接口 在 async 路径操作函数...内,要用以下方式读取文件内容: contents = await myfile.read() 在普通 def 路径操作函数 内,则可以直接访问 UploadFile.file contents = myfile.file.read...请求表单文件 FastAPI 支持同时使用 File 和 Form 定义文件和表单字段 @app.post("/f/") async def create_file( file1: bytes...return {"item" : items[item_id]} 触发 HTTPException 时,可以用参数 detail 传递任何能转换为 JSON 的值,不仅限于 str。

    1.1K10
    领券