如何使用 node.js 对外部 webapp 的用户进行身份验证?

Posted

技术标签:

【中文标题】如何使用 node.js 对外部 webapp 的用户进行身份验证?【英文标题】:How to authenticate users for a external webapp with node.js? 【发布时间】:2018-10-03 14:07:53 【问题描述】:

我有一个 node.js,express 网站,我在其中使用 jwt 令牌对我的用户进行身份验证。我想在我的管理界面中包含外部 web 应用程序,即 agendash。

Agendash 包含在这样的快速中间件中:

const agenda = new Agenda(db: address: config.get("DBUrl"))
app.use('/agenda', Agendash(agenda));

我的计划是使用 iframe 并添加身份验证中间件功能,在其中检查用户是否为管理员,然后将身份验证令牌添加到来自前端的每个请求。但似乎没有办法做到这一点。

有没有办法让这条路线只对我的管理员用户可用而不更改议程代码?

【问题讨论】:

【参考方案1】:

你可以使用express-basic-auth来做到这一点

只需将其作为中间件添加到您的议程路径

var express = require('express');
var app = express();
var basicAuth = require('express-basic-auth')

// ... your other express middleware like body-parser

var Agenda = require('agenda');
var Agendash = require('agendash');

var agenda = new Agenda( db:  address: 'mongodb://127.0.0.1/agendaDb'  );
// or provide your own mongo client:
// var agenda = new Agenda(mongo: myMongoClient)

app.use('/dash', 
  basicAuth(
    users: 
      admin: "super-secure-password",
    ,
    challenge: true,
  ),
  Agendash(agenda));

// ... your other routes

// ... start your server

【讨论】:

以上是关于如何使用 node.js 对外部 webapp 的用户进行身份验证?的主要内容,如果未能解决你的问题,请参考以下文章

如何从Node.js中的URL加载外部js脚本

如何从 Node.js 中执行外部程序?

Node.JS webapp:身份验证、创建帐户、忘记密码和更改密码

如何从 node.js 调用外部脚本/程序

Node.js - 如何从 app.js 外部发出 socket.io 事件?

如何在Node.js应用程序中使用Javascript来获取外部网页信息/ webscraping?