检查每个 Node.js 请求的身份验证凭据

2024-03-05

我使用 Node.js 与 Express 和 connect-auth 来对用户进行身份验证。

这是请求/index时的验证:

if(req.isAuthenticated()) {
  res.redirect('/dashboard');
} else {
  res.render('index', { layout: 'nonav' });
}

然而,注销并返回 f.e. 后'/dashboard',我可以看到仪表板。

如何对每个请求进行身份验证检查,以确保始终存在有效用户?

我的身份验证没有任何问题,一切正常!我需要一个解决方案,检查每个路由/请求是否有有效用户,而不在路由实现中放置函数或 if 语句,因为整个应用程序无论如何都需要有效用户。 Express-Authentication-Example 在路由定义中使用了“restrict”,这很接近,但对于许多路由来说,它很容易被忘记。


app.all('*',function(req,res,next){
    if(req.isAuthenticated()){
        next();
    }else{
        next(new Error(401)); // 401 Not Authorized
    }
});
// NOTE: depending on your version of express,
// you may need to use app.error here, rather
// than app.use.
app.use(function(err,req,res,next){
    // Just basic, should be filled out to next()
    // or respond on all possible code paths
    if(err instanceof Error){
        if(err.message === '401'){
            res.render('error401');
        }
    }
});

如果您定义all路由在需要身份验证的路由之前和在不需要身份验证的路由之后(例如主页、登录等),那么它应该只影响需要它的路由。或者,您可以使用 RegExp 而不是'*',其中将包括需要身份验证的子路径或路径列表。

另一种选择是创建一个函数来包含在每个需要身份验证的路由中:

function IsAuthenticated(req,res,next){
    if(req.isAuthenticated()){
        next();
    }else{
        next(new Error(401));
    }
}
app.get('/login',function(req,res,next){
    res.render('login');
});
app.get('/dashboard',IsAuthenticated,function(req,res,next){
    res.render('dashboard');
});
app.get('/settings',IsAuthenticated,function(req,res,next){
    res.render('settings');
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查每个 Node.js 请求的身份验证凭据 的相关文章

随机推荐

  • 出现错误 400 / 404 - HttpUtility.UrlEncode 未编码完整字符串?

    为什么以下 URL 会出现以下 IIS 错误 A http 192 168 1 96 cms View aspx Show Small test http 192 168 1 96 cms View aspx Show Small test
  • 如何在TThread中设置堆栈大小?

    如何设置自定义堆栈大小TThread 我正在尝试重新引入构造函数TThread但它说ThreadProc不见了 但它就在那里System Classes type TThreadHelper class helper for TThread
  • PHP - 访问 SPAN 值

    我是 PHP 新手 但我正在为订单表单编写电子邮件脚本 我拥有所有值以及表单中没有的内容 其中包含一个跨度用于 javascript 访问客户端的文本元素 我需要做的就是在发布时访问这些跨度值 HTML
  • 图灵完整性需要什么逻辑门?

    我儿子最近在玩小小大星球2 我注意到游戏编辑器允许与门 或门和非门 它是图灵完备吗 如果是这样 任何人都可以推荐一个学习资源 将这些原语转换成更高级别的条件 if 之类的东西吗 你不需要并且one ofAND 或 OR 能够完成所有二进制逻
  • 在 emacs 中调试 python 程序

    如何在 emacs 中调试 python 程序 我在用着python mode el 我发现参考文献建议 import pdb pdb set trace 但我不知道如何使用它 Type M x cd将目录更改为您要调试的程序的位置 类型M
  • headerenricher Spring 集成和 java dsl

    我使用 Spring Integration 和 java dsl 规范来实现我的 IntegrationFlow 我想使用自定义标头丰富器将一些文件名添加到标头 它将类似于 public class FileHeaderNamingEnr
  • 如何根据设置的主题更改flutter中的状态栏图标和文本颜色?

    如何在没有任何第三方插件的情况下更新状态栏图标的颜色 在我的主题类中 我有一个函数 我正在其中尝试下面的代码 但尚未取得结果 截至目前的主题代码 custom light theme for app static final customL
  • 有没有更有效的方法将我的图像划分为重叠的块?

    我想将图像划分为重叠的块 并单独处理这些块 并将每个矩阵的输出存储到一个矩阵中 我尝试过使用im2col但这根本不实用 我的代码是 kek im2col images m 1 64 64 sliding for i 1 size kek 2
  • 如何增加 Firebase 实时数据库 (v9) 中的值

    我注意到有关于如何在 Javascript v8 中增加实时数据库值的说明 添加了 ServerValue increment 以支持无需事务的原子字段值增量 API 文档在这里 使用示例 firebase database ref nod
  • C#:以与分配相反的顺序处理资源是否有优势?

    许多年前 我被告诫要尽可能以与分配方式相反的顺序释放资源 那是 block1 malloc block2 malloc do stuff free block2 free block1 我想象在 640K MS DOS 机器上 这可以最大限
  • ASP.Net MVC 6 + WebAPI Auth - 将 MVC 重定向到登录,但如果使用 WebAPI,则返回 401

    我有一个 AngularJS MVC WebAPI 我正在尝试 使用标准 个人账户 进行MVC认证 使用相同的用户和密码进行基于 WebAPI 的身份验证 问题是 从 AngularJS 来看 一切正常 cookie 交换发生 Web AP
  • 使用 ExtJS 4 的动态模型

    在 ExtJS 3 x 中 我能够使用 Store 的 fields 属性 但在 ExtJS 4 中我似乎必须绝对使用模型 这很好 但就我而言 它不是静态模型 我需要动态定义字段 有时还需要更改它们 我可以重新创建一个模型 但我需要使用不同
  • Ruby 2.1 和 Nokogiri 安装错误?

    我知道这个问题已经在这里 解决 了很多次 但我已经尝试了所有的解决方案 但仍然无法使其发挥作用 这是我的错误 22 01 14 17 57 56 gt gem install nokogiri Building native extensi
  • 如何计算具有共同列名的不同数据框之间的差异

    我有三个数据帧 并尝试计算由数据帧 1 调节的两个数据帧 Df2 和 Df3 之间的差异 如以下示例中所述 我有三个数据帧 Df1 Df2 和 Df3 它们具有通用名称 第一步 在 Df1 中 我想将 标准 列的值与所有三列 Das Dss
  • 有没有办法从跟踪生命周期的任何地方获取给定起点的请求的完整跟踪?

    有没有办法从跟踪生命周期的任何地方获取完整的跟踪请求 基本上 如果我有跟踪的中间点或终点 我可以使用这些点来获取请求的完整跟踪吗 我想构建一个跟踪服务 在 Golang 中 只要用户在请求跟踪期间随时提供点 跨度 该服务就可以返回请求的完整
  • 机器人类类似于 android 类[重复]

    这个问题在这里已经有答案了 可能的重复 Android API 如 java awt Robot https stackoverflow com questions 4416228 android api like java awt rob
  • SQL对具有重叠时间跨度的数据进行分组

    我需要根据记录开始和结束时间通过重叠时间跨度将彼此相关的数据分组在一起 SQL fiddle在这里 http sqlfiddle com 18 87e4b 1 0 http sqlfiddle com 18 87e4b 1 0 我构建的当前
  • 更改 WPF 应用程序中的默认打印机

    我正在寻找更改 WPF 应用程序中默认打印机的最佳方法 以下是我们希望应用程序能够执行的步骤 从下拉列表中选择映射到打印机名称的位置 将默认打印机更改为映射名称 启动 IE 并指向 SSRS 报告 然后 用户将从 IE 打印报告 IE 将使
  • 绘图:平行坐标图:轴样式

    我真的很喜欢平行坐标图 情节很好 但我刚刚遇到了一个需要帮助的问题 某些坐标是否可以使用基于 log10 的轴 正如您在下面的示例中看到的 执行 log10 变换可以更好地区分较小的值 然而 通过转换数据 我们失去了解释这些值的能力 我更喜
  • 检查每个 Node.js 请求的身份验证凭据

    我使用 Node js 与 Express 和 connect auth 来对用户进行身份验证 这是请求 index时的验证 if req isAuthenticated res redirect dashboard else res re