express.js或react.js中的通用用户名/密码身份验证

问题描述:

设置用户身份验证可以通过设置.htaccess和.htpasswd轻松实现。但是,我正在开发一个新的Web应用程序,我使用express.js或react.js创建一个Web服务器。我在网上搜索了用户认证,但他们是电子邮件样式登录的长期项目,如here。我只需要一个通用的用户名和密码。当用户浏览我的网站时,弹出窗口显示用户名和密码。 (与.htaccess样式相同)express.js或react.js中的通用用户名/密码身份验证

根据我的理解,您需要在nodejs中使用http服务器身份验证。

我知道一个npm模块。 link

而且它也很容易设置。 基本例如

// Authentication module. 
var auth = require('http-auth'); 
var basic = auth.basic({ 
    realm: "Simon Area.", 
    file: __dirname + "/../data/users.htpasswd" 
}); 

// Creating new HTTP server. 
http.createServer(basic, (req, res) => { 
    res.end(`Welcome to private area - ${req.user}!`); 
}).listen(1337); 
+0

我会在星期二实施它,但这似乎是正确的答案,并感谢您的链接。 .htpasswd格式将是相同的?就像它将有一行用户名:在这种情况下密码西蒙:密码 –

如果有人有兴趣ES2016做然后按照下面的代码。设置babel等,使其工作。

import express from 'express'; 
import auth from 'http-auth'; 
// Configure basic auth 
const basic = auth.basic({ 
realm: 'SUPER SECRET STUFF' 
}, (username, password, callback) => { 
callback(username == 'admin' && password == 'password'); 
}); 
// Set up express app 
const app = express(); 
// Create middleware that can be used to protect routes with basic auth 
const authMiddleware = auth.connect(basic); 
// Protected route 
app.get('/', authMiddleware, (request, response) => { 
response.send('you made it!'); 
}); 
app.listen(3000);