无会话的 Passport js 身份验证

2023-11-22

我是expressjs和passportjs的初学者。 我使用护照和 GoogleStrategy 通过谷歌进行身份验证。使用下面的代码我有req.user = { id: '123456' } in /用户/你好路由处理程序,但我想得到一些类似的没有会话支持的东西,将其作为答案发送给经过身份验证的客户端。换句话说,如果身份验证成功而无需 cookie 会话启动,我想向客户端发送一些令牌。当我关闭会话时,我找不到如何将用户对象转发到目标路由处理程序的方法。

passport.use(new GoogleStrategy({
    returnURL: 'http://localhost/auth/google/return',
    realm: 'http://localhost/'
  },
  function(identifier, profile, done) {
    done(null, {id: '123456'});
  }
));

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

passport.deserializeUser(function(id, done) {
    done(null, {id: id});
});

app.use(session({ secret: 'keyboard cat' }));
app.use(passport.initialize());
app.use(passport.session());

app.get('/auth/google', passport.authenticate('google');
app.get('/auth/google/return',
    passport.authenticate('google', {
        successRedirect: '/users/hello',
        failureRedirect: '/users/goodbye' 
    }));

要关闭会话,请尝试更改此设置:

app.get('/auth/google/return',
passport.authenticate('google', {
    successRedirect: '/users/hello',
    failureRedirect: '/users/goodbye' 
}));

to:

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

无会话的 Passport js 身份验证 的相关文章

  • 启动nodejs时出错:openssl配置失败

    启动 Express 节点时出现以下错误 openssl 配置失败 错误 02001003 系统库 fopen 没有这样的 过程 节点无论如何都会启动 我没有尝试使用 SSL 这是起始代码 app Express app set port
  • 我应该在 Promise.all 中使用 wait 吗?

    我正在构建快速中间件 以对数据库进行两次异步调用 以检查用户名或电子邮件是否已在使用中 这些函数返回的承诺没有捕获 因为我想将数据库逻辑与 req res next 逻辑分开 并且我有集中的错误处理 需要next作为一个论点 在我对本地环境
  • Passport-local-mongoose:createStrategy 不是函数/authenticate 不是函数

    我正在构建这个启动项目 https github com cj wang mean start tree 424e6056e33bb16874ae808daf3780d53309296f并尝试添加用户登录护照本地猫鼬 https www n
  • ini_set 'session.gc_maxlifetime' 为 1 天

    If I do ini set session gc maxlifetime 86400 这是否意味着用户可以将浏览器留在同一页面 非活动状态 最多 1 天 而不必担心会话被垃圾收集并被注销 如果服务器配置不支持此功能会发生什么 它会给我一
  • 在 Express Nodejs 中将图像文件转换为 Base64

    我正在尝试将图像文件转换为base64 这样我就可以以base64字符串形式存储在mongoDB中 这就是我尝试这样做的方式 router post file upload function req res function base64
  • 无法调用 Node.js 中 ES6 定义的类中的方法 [重复]

    这个问题在这里已经有答案了 我正在使用 Node js Express js 和 MongoDB 制作一个应用程序 我正在使用 MVC 模式 并且还有单独的路由文件 我正在尝试创建一个控制器类 其中一个方法调用其中声明的另一个方法 但我似乎
  • Joomla getUser() 不显示更新的用户数据

    下面的代码允许我在用户的 Joomla 个人资料的个人资料页面中显示用户名 鉴于我已经覆盖了模板以获得我想要的外观和感觉 user JFactory getUser if user gt guest echo You are logged
  • 如何在nodejs中模拟请求和响应来测试中间件/控制器?

    我的应用程序有几个层 中间件 控制器 管理器 控制器接口与中间件一相同 req res next 所以我的问题是 如何在不启动服务器并向本地主机发送 真实 请求的情况下测试我的控制器 我想要做的是像nodejs那样创建请求 响应实例 然后调
  • 为 Heroku 上的 Mongo Labs 数据库配置 Node.js 连接字符串

    我的 Web 应用程序 基于 Node js 和 Express 构建 在本地运行良好 但当我将其部署到 Heroku 时 我无法连接到我的 Mongo Labs 数据库 我已更改 app js 文件中的连接字符串 以正确反映新 Herok
  • Heroku 构建在 package.json 文件中找不到 `@types`

    Heroku 构建错误 TSError Unable to compile TypeScript src server ts 1 38 error TS7016 Could not find a declaration file for m
  • Rails 检测用户是否是第一次访问

    如果用户是第一次访问该网站 我会尝试让他们填写一份调查问卷 我的控制器设置如下 class MainController lt BaseController end class BaseController lt ApplicationCo
  • 在 Express Route api 中添加命名参数

    我有一条快速路线 如下所示 app get api v1 username option function req res do stuff 如何修改此路由 以便 URL 显示选项的参数名称 option 例如 http localhost
  • Django 会话:修改时更改会话密钥

    我正在设置一个支付网关 并使用会话跨页面请求存储数据 下面的类用于组织和存储会话信息 class Gateway def init self session key None session name FOO Store session I
  • 使用node+express解压POST正文

    我有一个简单的节点应用程序 应该从客户端写入指标 客户端以 json 格式发送指标 并用 python 的 zlib 模块压缩 我试图添加一个中间件来在快速 bodyParse 发生之前解压缩请求帖子 我的中间件就是express默认提供的
  • Express生成JSON

    我正在尝试传递一个键值并根据传递的键生成 JSON 响应 快速计划 var express require express async require async http require http mysql require mysql
  • 如何通过javascript关闭电子应用程序?

    我正在通过电子运行一个快速应用程序 下面是main js const electron require electron app electron app BrowserWindow electron BrowserWindow let m
  • 将对象数组发布到帆会导致“类型错误:无法将对象转换为原始值”

    在我的 html 页面中 我将这篇文章发送到我的 sails 服务器 但我无法获取控制器中的数据 因为 req param 函数不会返回任何有意义的答案 这是网页代码 post http myserver local calendar ba
  • Express COR 策略阻止 Apollo 客户端从服务器获取数据

    我正在运行一个反应开发服务器http localhost 3000和一个快递服务器http localhost 8080并使用 Apollo 客户端来查询服务器 为了使会话数据能够从客户端传递到服务器 我添加了credentials inc
  • 超出 WCF 最大并发会话数

    我的公司申请遇到了问题 我将总结系统的关键要素 我公司的系统几年来一直在 Windows XP 和 7 Home Pro Basic 机器上运行 它是用 NET 4 0 编写的 基于 WCF 它使用默认的限制值 MaxConcurrentS
  • Node.js 护照会话 Cookie 域

    我正在使用 node js Passport 并试图弄清楚如何在父域上设置 cookie 以便它可用于子域 用户登录 Domain com 然后用户访问 Sub Domain com 他应该仍然处于登录状态 如何在父域上设置 cookie

随机推荐

  • 如何以编程方式结束 2.3+ 上的通话?

    直到 Android 2 2 我知道我可以使用反射并通过 getITelephony 终止呼叫 但是 从 2 3 开始 这不再有效 因为即使您向应用程序授予 MODIFY PHONE STATE 权限 它现在也只是系统应用程序的权限 htt
  • 使用 Selenium + Python 循环链接并从结果页面中抓取数据[重复]

    这个问题在这里已经有答案了 我是 Selenium 的新手 需要抓取一个包含链接列表的网站 其结构如下 a class unique href i class something i Text span class something Te
  • 为什么 C 和 C++ 中 NULL 指针的定义不同?

    In C NULL定义为 void 0而在 C 中则是0 为什么会这样呢 在C中我可以理解如果NULL不是类型转换为 void 那么编译器可能 可能不会生成警告 除了这个 还有什么原因吗 早在 C 03 中 ISO 规范 4 10 1 将空
  • 如何更改通过 WindowManager 添加的窗口的 z 顺序?

    是否可以指定每个窗口的 z 顺序 在下图中 每个 editText 都位于通过 WindowManager 添加的自己的窗口中 正如你所看到的 我有一个 z 顺序问题 就像你在图片上看到的那样最后添加的窗口接缝采用更高的 z 顺序 因此 我
  • 在 Linux 上安装 PyQt5 5.14.1

    pip3 install PyQt5 Collecting PyQt5 Using cached https files pythonhosted org packages 3a fb eb51731f2dc7c22d8e1a63ba88f
  • 设置捆绑值返回 nil

    我向我的应用程序添加了一个 设置 包 在 Xcode 中 它出现在我的项目树视图的根目录中 The Root plist文件看起来像这样
  • 可以对 Julia 代码进行逐行分析吗?

    我有一些长达数百行的 Julia 函数 我想对其进行分析 以便我可以优化代码 我知道基准测试工具包允许使用以下命令测量函数的总体执行时间和内存消耗 btime or benchmark 但这些函数没有告诉我函数内部的瓶颈在哪里 因此 我的第
  • findall/3 在其结果列表中创建新的、不相关的变量

    permutation A B C Z Z A B C Z A C B Z B A C Z B C A Z C A B Z C B A false 说得通 我可以研究以下的排列 A B C 并且该排列包含与中相同的元素 A B C 所以我对
  • 如何禁止两个相互冲突的选项

    有没有办法向 Python 的 ArgumentParser 指定两个可选标志发生冲突 arg parser add argument c clean action store true arg parser add argument d
  • CallExpression 和 MemberExpression 之间的区别

    有什么不同 我看了ECMAScript规范 但不明白 真正的代码示例会有很大帮助 如果你能解释这里的每一行那就太好了 MemberExpression PrimaryExpression FunctionExpression MemberE
  • 检测有向图中循环的最佳算法[关闭]

    Closed 这个问题是基于意见的 目前不接受答案 是否有一种有效的算法来检测有向图中的循环 我有一个有向图 表示需要执行的作业的时间表 作业是节点 依赖项是边 我需要检测该图中导致循环依赖的循环错误情况 Tarjan 的强连通分量算法 h
  • Pandas Dataframe / Numpy 数组“轴”定义中的歧义

    我对 python 轴的定义方式以及它们是否引用 DataFrame 的行或列感到非常困惑 考虑下面的代码 gt gt gt df pd DataFrame 1 1 1 1 2 2 2 2 3 3 3 3 columns col1 col2
  • JavaScript 中的 Console.log 输出

    Why do console log 00 and console log 01 在浏览器控制台中打印 0 和 1 而不是 00 和 01 console log 00 prints 0 console log 01 prints 1 co
  • Flex-box:将最后一行与网格对齐

    我有一个简单的弹性盒布局 其中包含如下容器 grid display flex flex flow row wrap justify content space between 现在我希望最后一行中的项目与另一行对齐 justify con
  • 如何将相同类型的多个参数传递给 jQuery Get

    我正在尝试使用 jQuery get 从网站获取一些数据 我需要设置2个相同类型的参数 q Some Text q Some other text jQuery 似乎用第二个实例覆盖 q 的第一个实例 并且仅发送 1 有什么办法解决这个问题
  • 适用于 iOS 的 WebDav 客户端库 [已关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 是否有适用于 iOS 的 WebDav 客户端实现 看一下WTclient
  • 当只需要一个字节时,为什么 Rust 使用两个字节来表示这个枚举?

    它似乎足够聪明 只为 A 使用一个字节 但不够聪明 为 B 使用一个字节 即使只有 8 8 64 种可能性 有什么方法可以让 Rust 解决这个问题 还是我必须手动实现更紧凑的布局 游乐场链接 allow dead code enum A
  • Python 3:gzip.open() 和模式

    https docs python org 3 library gzip html 我正在考虑使用gzip open 我有点困惑mode争论 模式参数可以是 r rb a ab w wb x 中的任何一个 或 xb 表示二进制模式 或 rt
  • 检测 32 位或 64 位 Windows

    我想检测当前的Windows操作系统是32位还是64位 如何用C 实现呢 我不需要处理器类型 我想要操作系统的位类型 这是因为您可以在 64 位处理器上安装 32 位操作系统 要调用的函数是IsWow64Process or IsWow64
  • 无会话的 Passport js 身份验证

    我是expressjs和passportjs的初学者 我使用护照和 GoogleStrategy 通过谷歌进行身份验证 使用下面的代码我有req user id 123456 in 用户 你好路由处理程序 但我想得到一些类似的没有会话支持的