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 - 需要一个好的 JavaScript uploader

node.js - 如何在 Expressjs 中进行 Web 服务调用?

javascript - node.js 使用 Passport 登录

javascript - 如何在 highchart 工具提示中显示前 100 个字符,然后说 "See more .."?

javascript - MongoDB 元素顺序

javascript - 为什么 Array 中的函数不能在 'arguments' 上工作?

node.js - npm 错误!版本无效 : y

javascript - Angular 路由通过手动刷新或直接输入 url 进入主页

node.js - 如何使用 nodejs/passport 处理未经授权的请求

node.js - 在 Express 中间件中重用 mongoose 对象的模式