В настоящее время я пытаюсь создать сервер 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?