Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.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/node js中的多个基本身份验证_Javascript_Http_Express_Authentication_Basic Authentication - Fatal编程技术网

Javascript express/node js中的多个基本身份验证

Javascript express/node js中的多个基本身份验证,javascript,http,express,authentication,basic-authentication,Javascript,Http,Express,Authentication,Basic Authentication,我正在尝试实现一个受基本HTTP身份验证保护的web应用程序,我设法使它在整个项目中都能正常工作,但我希望在我的应用程序的路由中在多个级别上进行某种区分。我需要将我的应用程序的一部分保留在该身份验证之外,例如一部分(/public/:user)和第二部分,其中包含一些API(/API/android/some1或/API/android/some2),以便与android应用程序通信。我希望通过第二级身份验证来保护它。有可能这样做吗? 我四处阅读并尝试过,但也有一些错误。我在我的app.js中用

我正在尝试实现一个受基本HTTP身份验证保护的web应用程序,我设法使它在整个项目中都能正常工作,但我希望在我的应用程序的路由中在多个级别上进行某种区分。我需要将我的应用程序的一部分保留在该身份验证之外,例如一部分(/public/:user)和第二部分,其中包含一些API(/API/android/some1或/API/android/some2),以便与android应用程序通信。我希望通过第二级身份验证来保护它。有可能这样做吗? 我四处阅读并尝试过,但也有一些错误。我在我的app.js中用于基本身份验证的功能如下:

...
app.use(function(req, res, next){
 var user = auth(req);

 if (user === undefined || user['name'] !== process.env.BASIC_USR || user['pass'] !== process.env.BASIC_PSW) {
    res.statusCode = 401;
    res.setHeader('WWW-Authenticate', 'Basic realm="NodeJS"');
    res.end('Access denied');
 } else {
    next();
 }
});
// index
app.get('/', routes.index);

// home    
app.get('/home', home.view);
...
我知道,当我使用此函数时,下一个路由器的整个部分都受到basic auth的保护,但一旦我在下一部分插入第二部分,稍后在app.js中的代码中,我就有以下内容:

...
app.use(function(req, res, next){
 var user = auth(req);

 if (user === undefined || user['name'] !== process.env.DROID_USR || user['pass'] !== process.env.DROID_PSW) {
    res.statusCode = 401;
    res.setHeader('WWW-Authenticate', 'Basic realm="NodeJS"');
    res.end('Access denied');
 } else {
    next();     
 }
});

// API app android 
app.get('/API/get1', get.one);
app.get('/API/get2',get.two);
一旦我登录到我的一个API,我就会不断地被要求提供我的凭据,而从来没有访问过API结果(显示来自mysql数据库的数据)。另外,我尝试将我想要公开的部分(/public/:user)移动到我的家(/home)之前,但这显示了一个错误。当我尝试访问我的主页(/home)时,由于我在我的应用程序的公共部分(/public/:user)中有一个动态URL,其中用户根据用户数量进行更改,并且这个数字也在代码中使用,这告诉我这个变量没有定义,但我目前没有访问我应用程序的这个公共部分

我有两个问题要提出:

1) 如何在两个或更多级别上最好地实现此身份验证

2) 我如何从全局身份验证中排除我想公开的路由部分