Passport-local mongoose node.js 支持多种用户类型

2023-11-27

我想要两种类型的用户登录(用户、客户端)。我到底如何在 app.js 中为这两种类型创建 localStrategies、序列化和反序列化用户 我有两个单独的模式,都使用 PassportLocalMongoose 插件。

我目前配置我的护照如下,

var User = require('./models/User');
var Client= require('./models/Client');
passport.use(new LocalStrategy(User.authenticate(), Client.authenticate()));
passport.serializeUser(User.serializeUser(), Client.serializeUser());
passport.deserializeUser(User.deserializeUser(), Client.deserializeUser());

问题出在我尝试注册时。注册为用户有效,但作为客户端显示“未经授权”错误。 我该如何解决这个问题?


在浏览了 Passport.js 的文档(感谢 Jared)之后,我明白我几乎做错了所有事情。

  1. 创建了两个 localStrategies

    passport.use('userLocal', new LocalStrategy(User.authenticate())); passport.use('clientLocal', new LocalStrategy(Client.authenticate()));

并进行身份验证,

passport.authenticate('userLocal')(req, res, function () {
    res.redirect('/profile');
  });
and
passport.authenticate('clientLocal')(req, res, function () {
    res.redirect('/client');
  });
  1. 使用 Passport 模块(l=不使用 Passport-local-mongoose 模块)进行序列化用户和反序列化用户。

    passport.serializeUser(function(user, done) { done(null, user); });

    passport.deserializeUser(function(user, done) { if(user!=null) done(null,user); });

整个用户架构(对象)现在存储在请求中,并且可以通过任何路由进行访问。

希望它可以帮助其他遇到类似问题的人。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Passport-local mongoose node.js 支持多种用户类型 的相关文章

  • MongoDB 支持浮点类型吗?

    我正在将 mysql 数据库迁移到 mongodb 但我读过 MongoDb 数据类型 然后没有引用浮点类型 如 float double decimal 我如何在 mysql 模式中拥有一些带有十进制类型的字段 我该怎么做或我能做什么 M
  • 使用 Sequelize (NodeJS) 代替 * 指定特定字段

    好吧 我在 NodeJS 中有一个项目 我正在其中使用 Sequelize 来实现 MySQL ORM 这件事工作得非常好 但是我试图弄清楚是否有一种方法可以指定在查询的基础上返回哪些字段 或者是否有一种方法可以在某处执行 query 例如
  • 通过 Amazon SQS 将压缩文本从 PHP 发送到 NodeJS

    我似乎一直坚持通过 Amazon SQS 将压缩消息从 PHP 发送到 NodeJS 在 PHP 方面我有 SQS gt sendMessage Array QueueUrl gt queueUrl MessageBody gt artic
  • 错误:grid.mongo.GridStore不是构造函数,使用mongoose、Grid-fs-stream和grid multer存储

    我收到以下提到的错误 基本配置如下 我已经将文件上传到服务器上 我想下载它们但出现这些错误 我向 api files delete fileId 调用了 POST 请求 它应该调用路由并将文件返回给浏览器 而不是使用网格相关模块获取错误 M
  • MongoDB:计算数组中的项目数

    我有一个集合 其中集合中的每个文档都有一个名为的数组foo包含一组嵌入文档 目前 MongoDB shell 中是否有一种简单的方法来计算其中有多少个实例foo 就像是 db mycollection foos count or db my
  • MongoDB聚合选择性项目

    我在聚合聚合期间遇到了重塑文档的问题 基本上我想根据条目的类型将条目推送到字段中 我的结构如下 id P1 entities type A val X type B val X type A val Y 我想 unwind 和 projec
  • crypto createHMAC 输出根据 Nodejs 版本而有所不同

    我在升级节点版本时遇到加密模块问题 创建的HMAC取决于节点的版本 您将在下面找到重现该问题的代码片段 如果我将密钥编码为 BASE64 或任何 HMAC 不依赖于 node js 版本 如果我将其编码为二进制 则当我更改 Node js
  • 由 aws API 制作的 HttpRequest 拦截器

    我正在开发一个项目 该项目使用 cognito 作为身份验证服务来保护使用 nodeJS 制作的无服务器休息 API 我已成功关闭未经身份验证的客户端的 API 现在 每当我从 Angular 客户端发出请求时 我都需要在标头中自动注入一个
  • 节点应用程序之间共享会话?

    我目前有两个独立的节点应用程序在两个不同的端口上运行 但共享相同的后端数据存储 我需要在两个应用程序之间共享用户会话 以便当用户通过一个应用程序登录时 他们的会话可用 并且他们似乎已登录到另一个应用程序 在本例中 它是一个面向公众的网站和一
  • 从 Facebook Account Kit 获取电话号码

    Account Kit 文档指出 如果您使用 AccountKitActivity ResponseType TOKEN 开始登录会话 则可以通过调用 getCurrentAccount 来访问当前帐户的 Account Kit ID 电话
  • 使用 mgo 驱动程序进行 mongo 聚合查询

    我在 mongodb 中有以下查询 db devices aggregate match userId v73TuQqZykbxFXsWo state true project userId 1 categorySlug 1 weight
  • 多次训练brain.js?

    在第一次训练后 如何将新信息 仅新信息 而不是所有信息 因为这会花费太多性能 训练到我的用 Brain js 制作的神经网络 它有点粗糙 但您可以使用以下结构来实现 如果我们加入 2 个训练数据集 旧数据集与新数据集 然后重新训练keepN
  • 当我有自定义身份验证模型时,如何登录 Django Rest 可浏览 API?

    我有一个自定义用户模型 如下所示account models py from django contrib auth modles import AbstractUser from django db models signals impo
  • 根据 MVC,哪种项目结构是正确的? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我注意到诸如flask通常有一个名为views容纳 app route def index return render template ind
  • 如何用 JavaScript 修复图像透视变形和旋转?

    我有一些用手机拍摄的图像 有没有可以拉直纸张照片并将其压平的 JavaScript 库 例如 我想创建一个矩形图像 该图像没有任何失真 换句话说我想知道如何用 JavaScript 修复透视变形和旋转 例如 我发现下面的示例图像来自this
  • 在需要时初始化模块

    我有一个模块 里面有一些初始化代码 加载模块时应执行 init 目前我正在这样做 in the module exports init function config do it in main var mod require myModu
  • 在 Meteor 应用程序中实现 MongoDB 2.4 的全文搜索

    我正在考虑向 Meteor 应用程序添加全文搜索 我知道 MongoDB 现在支持此功能 但我对实现有一些疑问 启用文本搜索功能的最佳方法是什么 textSearchEnabled true 在 Meteor 应用程序中 有没有办法添加索引
  • 无论我将其添加到何处,Azure 应用程序服务(节点)CORS 源都无法工作

    Azure CORS 设置似乎根本不起作用 除非我指定 任何和所有请求都将返回 has been blocked by CORS policy Response to preflight request doesn t pass acces
  • GSON 将带有日历的对象反序列化为带有 Mongo 日期的 json 并返回

    我有一些实体 其中包含一些日历属性 我想以将它们存储为 GSON 序列化 JSON 中的日期的方式对其进行序列化 因为 Mongo 可以将 date 存储为 new ISODate 我们通常通过使用 ExclusionStrategy 忽略
  • ContentDialog Windows 10 Mobile XAML - 全屏 - 填充

    我在项目中放置了一个 ContentDialog 用于 Windows 10 上的登录弹出窗口 当我在移动设备上运行此项目时 ContentDialog 未全屏显示 并且该元素周围有最小的填充 在键盘上可见 例如在焦点元素文本框上 键盘和内

随机推荐

  • 在代码隐藏中使用资源图像

    我需要动态更改应用于我的按钮之一的背景图像 但不知道如何操作 图像将添加到项目中 并将其 构建操作 设置为 资源 我已经尝试过以下操作 buttonUnits Background new ImageBrush new BitmapImag
  • 我们可以将 Firebase 实时数据库与核心 PHP 一起使用吗?

    我有一个 Android 应用程序 后端代码位于使用 MySql 的核心 PHP 中 有没有办法像我们在 MySql 上执行的方式直接从 API 执行 CRUD 操作 如果它是一个网络应用程序 可以使用 javascript 来完成 但是我
  • 使用 TextInputLayout 时更改 EditText 提示颜色

    我正在使用新的TextInputLayout来自设计库 我能够让它显示并更改浮动标签的颜色 不幸的是实际EditText提示现在始终为白色 我尝试过以编程方式更改 XML 样式中的hintColor 还尝试使用android support
  • 超出纳秒时间戳范围

    我在 Googlespeedsheet 中有一个变量 date hiring 格式如下 16 01 2016 我在Python中导入它 该变量有一个对象类型 我尝试转换为日期时间 from datetime import datetime
  • html或css中指定图像大小的区别

    这个链接非常接近我的问题 但似乎更适用于语法而不是实际渲染的输出 我看到图像的高度和宽度可以在实际的html中定义img标签 事实上我读它的方式should在那里定义 然而 我想知道当实际涉及到图像的显示方式时 什么才是重要的 如果我插入以
  • 分配新块时如何控制“std::deque”的块大小?

    当我们向a中插入一个新元素时std deque 如果现有的块都已满 它可能会分配一个新的块来包含该元素 然而 实现如何控制块大小呢 用户是否可以控制块大小 或者它仅取决于实现的选择 例如4K 还是 8K 这是实现的选定值 无法对其进行控制
  • 在系统分区写入文件

    我正在尝试将我的应用程序生成的文件写入系统分区 由于我无法在应用程序中创建 FileOutputStream 因此我在应用程序的数据目录中创建文件 更正权限 然后将其移动到系统分区 目前 下面的代码错过了 system 的可写重新安装 出于
  • 在命令行中将环境变量传递给java类

    我需要从本地文件中读取一些属性etc myconfig config 文件夹 我需要在命令行中给出这个文件路径 我已经给出了如下所述 但出现错误 显示如下 Error Could not find or load main class te
  • IntentService 不会启动使用 AlarmManager

    我知道对此有很多疑问 但我真的不知道我的错误在哪里 我的服务注册在AndroidManifest xml文件中
  • 无法加载文件或程序集“Oracle.DataAccess”或其依赖项之一。尝试加载格式不正确的程序

    我已在 IIS 7 0 Windows Server 2008 R2 64 位上安装了 Web 应用程序 我指的是 oracle DataAccess dll 当我尝试访问该应用程序时 我收到以下消息 无法加载文件或程序集 Oracle D
  • QT 5.0 QDebug编译错误

    我在使用 QDebug 编译代码时遇到问题 但我确实需要它 include
  • PHP 获取静态方法

    我想通过 var 调用类方法 如下所示 var read params array some parameter if MyClass has the static method var echo MyClass var params el
  • Zod Schema Validation 中至少一个/最少一个字段

    我已经使用 JOI 实现了此代码 其中用户必须发送 userId 和正文中的至少一个键 如何使用 ZOD 实现相同的功能 params Joi object keys userId Joi required custom objectId
  • 浅拷贝还是深拷贝?

    我对这两种将一个对象复制到另一个对象的方法有点陌生 我很困惑 无法找出深层复制和浅层复制之间的主要区别 我已经了解了很多关于此的理论 但我需要用适当的例子进行解释 我有一个程序 可以将一个对象复制到另一个对象中 gt class A pub
  • 计算两个日期间隔之间每月的天数

    我有一组事件 每个事件都有开始日期和结束日期 但它们发生的时间跨度为几个月 我想创建一个表格来显示每个月此事件的天数 我有下面的例子 event start date lt as Date 23 10 2012 d m Y event en
  • 上下文版本冲突错误,Google colab

    我正在尝试在 Google colab 上安装并运行 sunpy 它需要 astropy 版本 3 1 或更高版本的软件包 即使在安装 astropy 版本 3 2 1 后 当我导入 sunpy 时 它也会出现以下错误 Contextual
  • Android Activity 的唯一 ID

    我需要获取 Android 活动实例的唯一 ID 我想获取activitymanager在日志中写入的字符串 例如 ActivityManager HistoryRecord的活动暂停超时 450495a0 但我不知道如何得到它 有人知道我
  • 如何从 PHP 压缩或转换为低质量 MP3 文件 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 是否有任何 PHP 库或函数可以将 MP3 文件转换为较低质量 我想通过 PHP 将 128Kbps 或更高质量的 MP3 文件压缩 转换为 64K
  • Javascript:console.log 到 html

    我想将 console log 输出写入 div 层 例如 document write console log 5 1 Incorrect random example 有人可以解决我的问题吗 谢谢 EDIT 我的意思是 例如 conso
  • Passport-local mongoose node.js 支持多种用户类型

    我想要两种类型的用户登录 用户 客户端 我到底如何在 app js 中为这两种类型创建 localStrategies 序列化和反序列化用户 我有两个单独的模式 都使用 PassportLocalMongoose 插件 我目前配置我的护照如