首页
学习
活动
专区
工具
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这个数组后,意味着可能有多个中间件...我们的技术团队也会不断产出原创文章, 一起见证各位的成长

84110
  • 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')

    2K42

    08_Express框架

    常用的中间件方法有app.get()、app.post()、app.use(),其基本语法形式如下。...app.get('请求路径', '请求处理函数'); // 接收并处理GET 请求 app.post('请求路径', '请求处理函数'); // 接收并处理POST 请求 app.use('请求路径'..., '请求处理函数'); // 接收并处理所有请求 app.get()中间件 当客户端向服务器端发送GET请求时,app.get()中间件方法会拦截GET请求,并通过app.get()中间件中的请求处理函数对...); }); app.listen(3000); console.log('服务器启动成功'); app.post()中间件 当浏览器向服务器发送POST请求时,app.post()定义的中间件会接收并处理...在实际的项目开发中,不推荐将不同功能的路由都混在一起存放在一个文件中,因为随着路由的种类越来越多,管理起来会非常麻烦。

    10410

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

    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.js与Express框架对比之路由 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.8K30

    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')); //如果两个目录中都存在相同名称的文件,则优先使用定义的目录为准; 静态资源中间件——⚠️⚠️注意事项: 静态资源中间件专门为响应静态资源而产生!!

    13410

    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 的模块,其中包含了与用户相关的路由处理函数

    81220

    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.get、app.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对象 还有,中间件有父子之分: Router与Route Router类的Layer实例对象layer.route为undefined...所以Router类中的Layer实例对象是保存普通中间件的实例或者路由中间件的路由,而Route实例对象route中的Layer实例layer是保存路由中间件的真正实例。...Route类用于创建路由中间件,并且创建拥有多个方法(多个方法是指app.get('/page',f1,f2...)中的那堆回调函数f1、f2...)的layer(对于同一个路径app.get、app.post

    94920

    Express框架

    请求 拥有大量第三方中间件对功能进行扩展 1.3 原生Node.js与Express框架对比之路由 ?...1.4 原生Node.js与Express框架对比之获取请求参数 ? 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.get和app.post这些方法时,其实就是在router上添加layer和route。当一个网络请求过来时,其实就是遍历layer和route,找到对应的handle拿出来执行。

    5.4K30

    什么是会话固定

    sessionId 关联,以映射至我们的数据库: const db = new Map(); app.get('/me', (req, res) => { const user = db.get...} else { res.send('try again'); } }); 如果我们登录,然后使用 cookie 向 /me 发送另一个请求,我们会得到以下结果: 这是对为什么我们必须使用...} else { res.send('try again'); } } }); }); 我们可以使用regenerate函数...仅使用 HTTP Only 的 Cookie 当你使用 HTTP Only 时,这意味着只有服务器可以通过 Set-Cookie 标头设置 cookie,而客户端(浏览器 JavaScript)无法更改它...是的,在 0.6.0 之前的版本中,问题就在那里,Passport 维护者认为会话重新生成应该在应用程序端完成,但一段时间后他们意识到问题的重要性,并在 0.6.0 版本中修复了它。

    27010
    领券