Двойной аутентификатор с JWT в NodeJS Express - PullRequest
0 голосов
/ 01 февраля 2020

В настоящее время я пытаюсь создать сервер express, который позволяет пользователю проходить аутентификацию с помощью двух сторонних сервисов: Google и Steam. Аутентификация выполняется через JWT, и она работает, когда активирована только одна из двух служб, но я не могу заставить работать защищенные маршруты, когда пользователь вошел в систему с помощью одной из двух служб.

код:

const express = require('express');
const bodyParser = require('body-parser');
const {gAuth, gProtect} = require('./auth/google_auth');
const {sAuth, sProtect} = require('./auth/steam_auth');

const app = express();

gAuth(app);
sAuth(app);

//middlewares
app.use(express.static('views'));// folder in which to put the static files (html, css, js client)
app.use(bodyParser.json({limit: '50mb'})); // read json

//middlewares (just for the widget)
app.use(bodyParser.urlencoded({ extended: true , limit: '50mb'})); // read form enctype data
app.set('view engine', 'ejs'); // set the engine render ejs for dynamic building of html pages with ejs tags

//set up routers for v1 app
const genericRouter = require('./routes/generic_router'); //testing if the application is working
const secureRouter = require('./routes/secure_router'); //testing if normal auth is working

//set up routers for latest version app
app.use('/', genericRouter);
app.use('/', gProtect(), secureRouter);//protected end-points (requiring auth)
app.use('/', sProtect(), secureRouter);

module.exports = app;

Проблема в бите

app.use('/', gProtect(), secureRouter);//protected end-points (requiring auth)
app.use('/', sProtect(), secureRouter);

, так как второй app.use перезаписывает первый, в результате чего все попытки аутентификации с Google завершаются неудачей. Что я могу сделать, чтобы пользователь мог получить доступ к защищенным маршрутам через Google или Steam?

1 Ответ

1 голос
/ 01 февраля 2020

Использовать разные конечные точки

app.use('/', genericRouter);
app.use('/google', gProtect(), secureRouter);
app.use('/steam', sProtect(), secureRouter);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...