Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Express:一条路由的基本身份验证_Javascript_Node.js_Authentication_Express - Fatal编程技术网

Javascript Express:一条路由的基本身份验证

Javascript Express:一条路由的基本身份验证,javascript,node.js,authentication,express,Javascript,Node.js,Authentication,Express,我正在尝试制作一套工具来访问我的数据库。大多数是通过我的webapps访问数据,但我还需要一个带有密码的express网站页面,以便网站所有者提供在线工具来编辑数据库;所有其他路由都不需要身份验证 在express 3中,basic auth使添加这样的密码变得容易,但由于express 4中的中间件以及大多数在线教程过时,其功能已被削弱。新版本的将处理身份验证标题信息,但如何触发浏览器中的登录弹出窗口 下面的代码只不过是一个样板,因此欢迎您提供一些关于世界上最简单登录的提示 express =

我正在尝试制作一套工具来访问我的数据库。大多数是通过我的webapps访问数据,但我还需要一个带有密码的express网站页面,以便网站所有者提供在线工具来编辑数据库;所有其他路由都不需要身份验证

在express 3中,
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'