Как отрисовать маршрут перед рендерингом статических файлов в узле js? - PullRequest
0 голосов
/ 15 октября 2018

Я хочу отрендерить app.use('/', callback function) перед рендерингом статических файлов из общей папки.

В основном я выполняю аутентификацию перед доступом к веб-сайту, поэтому, как только он будет аутентифицирован, он должен загрузить index.html (статическийфайл) из общей папки.

Как мне это сделать?

Я использую W3ID от IBM для аутентификации сайта.

const express = require('express');

const session = require('express-session');

const passport = require('passport');

const WebAppStrategy = require("ibmcloud-appid").WebAppStrategy;

const CALLBACK_URL = "public/index.html";

var path = require('path');

var bodyParser = require('body-parser');

var port = process.env.VCAP_APP_PORT || 8080;

var mongoose = require('mongoose');


//var MongoStore = require('connect-mongo')(session);

const app = express();

// mongodb connection

mongoose.connect("mongodb://admin:admin123@ds261430.mlab.com:61430/events");

var db = mongoose.connection;

// mongo error

db.on('error', console.error.bind(console, 'connection error:'));

// parse incoming requests

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

app.use(express.static(path.join(__dirname, 'public')));
app.set('views', path.join(__dirname, 'views'));


// Set view engine as EJS
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');

// include routes



app.use(session({
     secret: "123456",
     resave: true,
     saveUninitialized: true
     }));
 app.use(passport.initialize());
 app.use(passport.session());

passport.use(new WebAppStrategy({
 tenantId: "73585f35-8d9c-4f6f-9ab2-d07ca0c1d371",
 clientId: "863fce57-a717-4586-b8a2-0bf221ef4e68",
 secret: "MzkxMTMxMWMtNmYxNi00ZjNhLWFiNzctZjFlM2NkMDM1ZTkz",
 oauthServerUrl: "https://appid-oauth.eu-gb.bluemix.net/oauth/v3/73585f35-8d9c-4f6f-9ab2-d07ca0c1d371",
 redirectUri: "https://csi.eu-gb.mybluemix.net/" + CALLBACK_URL
 }));

passport.serializeUser(function(user, cb) {
 cb(null, user);
 });

passport.deserializeUser(function(obj, cb) {
 cb(null, obj);
 });

app.get(CALLBACK_URL, passport.authenticate(WebAppStrategy.STRATEGY_NAME));

app.use('/',passport.authenticate(WebAppStrategy.STRATEGY_NAME), function(req, res) {`enter code here`
    // do your authentication
});

// listen on port 8080
app.listen(port);

1 Ответ

0 голосов
/ 15 октября 2018

Вы можете сделать это, просто поместив ваш app.use('/',...) над app.use('/',express.static('...')).

или

Вы можете сделать это, передав параметр {index:false} вexpress.static like

app.use('/',express.static('path here',{index:false}));

Эта опция установит express.static, чтобы не отправлять index.html по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...