javascript - Node.Js 快速身份验证

标签 javascript node.js express basic-authentication passport.js

我的 Node.Js/Express 应用程序中有一个简单的自制 API。它需要身份验证。我的问题是,如果用户已经使用正常方式(我使用 passport 本地策略)登录应用程序,我不希望用户必须通过浏览器进行身份验证(基本身份验证)。但目前情况并非如此,所以我想请你帮我写一下……

在 app.js 中,我有以下字符串:

var api2 = require('./routes/api2');
app.use('/api2', api2.auth);

在routes/api2.js中我有:

exports.auth = express.basicAuth(User.authenticate);

然后当实际请求发生时,通过

进行处理
app.get('/api2/user/statements/:context?', api2.entries);

首先通过标准浏览器对话框向用户请求其用户/密码 – 基本身份验证(即使他们通过 Passport 登录到应用程序),然后才在 api2 中启动 exports.entries。 js 文件。

我希望仅当用户未通过 Passport 登录应用程序时,才通过浏览器对话框请求用户输入用户名/密码。

最佳答案

因为有Basic/Digest authentication strategies对于 Passport,您也可以执行以下操作:

var passport = require('passport'),
    LocalStrategy = require('passport-local').Strategy,
    BasicStrategy = require('passport-http').BasicStrategy;

passport.use(new LocalStrategy(...));
passport.use(new BasicStrategy(...));

// set up your Express middlewares
// ...
app.use(passport.initialize());
// if you use passport.session(), you must have included the Express session
// middleware somewhere up above
app.use(passport.session());
// ...

// then use passport.authenticate wherever you need to protect some route(s)
// this will try the local strategy first, then basic
app.use('/api2',
        passport.authenticate(['local', 'basic']));

关于javascript - Node.Js 快速身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23793813/

相关文章:

javascript - 当输入元素未使用JS获得焦点时,如何强制关闭ipad/iphone键盘?

javascript - 模板的 Angular-Route

javascript - ". Redirecting to" express

javascript - IntelliJ 卸载了 connect-flash,现在无法再次安装

JavaScript 文字,键的指针值

匹配随机数和文本输入的JavaScript

javascript - 将 jQuery slider 的初始值设置为 0

javascript - 为什么 Node (Javascript)中缺少分号不会引发错误?

node.js - Node.js 中的子进程是否可以保留彩色输出?

node.js - 将 Node.js 作为 Windows 服务运行