Javascript Express:一条路由的基本身份验证
我正在尝试制作一套工具来访问我的数据库。大多数是通过我的webapps访问数据,但我还需要一个带有密码的express网站页面,以便网站所有者提供在线工具来编辑数据库;所有其他路由都不需要身份验证 在express 3中,Javascript Express:一条路由的基本身份验证,javascript,node.js,authentication,express,Javascript,Node.js,Authentication,Express,我正在尝试制作一套工具来访问我的数据库。大多数是通过我的webapps访问数据,但我还需要一个带有密码的express网站页面,以便网站所有者提供在线工具来编辑数据库;所有其他路由都不需要身份验证 在express 3中,basic auth使添加这样的密码变得容易,但由于express 4中的中间件以及大多数在线教程过时,其功能已被削弱。新版本的将处理身份验证标题信息,但如何触发浏览器中的登录弹出窗口 下面的代码只不过是一个样板,因此欢迎您提供一些关于世界上最简单登录的提示 express =
basic auth
使添加这样的密码变得容易,但由于express 4中的中间件以及大多数在线教程过时,其功能已被削弱。新版本的将处理身份验证标题信息,但如何触发浏览器中的登录弹出窗口
下面的代码只不过是一个样板,因此欢迎您提供一些关于世界上最简单登录的提示
express = require('express')
app = express()
auth = require 'basic-auth'
port = Number(process.env.PORT || 9778);
app.listen port, () ->
console.log "Listening on port: " + port
app.use '/editor', (req, res) ->
user = auth req
if (user == "....") ...
console.log user
app.get '/editor', (req, res) ->
# if authenticated send 'editor.html' else....
res.send 401, "Need password"
目前,我正在添加一个身份验证来访问一个页面,然后允许该页面发布到CRUD节点。我认为我真的应该使用适当的REST API,并要求在CUD上进行身份验证?根据规范,服务器可以通过发送带有401状态码的WWW-Authenticate
头请求身份验证。以下几点对我很有用:
res.set({
'WWW-Authenticate': 'Basic realm="simple-admin"'
}).send(401);
我在自己的中间件中加入了如下内容:
var auth = require('basic-auth');
module.exports = function(req, res, next){
var user = auth(req);
if(validAuth){ // Here you need some logic to validate authentication
next();
} else {
res.set({
'WWW-Authenticate': 'Basic realm="simple-admin"'
}).send(401);
}
};
基于@JustinY,这是最终结果
app.use '/editor', (req, res, next) ->
user = auth req
if (user.pass == '******')
console.log user
next()
else
res.set
'WWW-Authenticate': 'Basic realm="simple-admin"'
res.send 401, "Need password"
app.get '/editor', (req, res) ->
res.sendfile 'editor/index.html'