Как настроить экспресс-маршруты по умолчанию?

Я видел много примеров того, как добавить промежуточное программное обеспечение для проверки подлинности на определенные маршруты, которые должны быть ограничены зарегистрированными пользователями (подразумевая, что по умолчанию разрешено кому-либо обращаться к страницам), но я не могу сказать, как для того, чтобы все маршруты по умолчанию требовали входа в систему и выборочно выбирали определенные маршруты среди тех, которые должны быть доступны анонимным пользователям.

Любые способы заставить его работать так? Я использую Express 4.

Ответ 1

Я бы использовал: https://github.com/expressjs/session после аутентификации пользователя, тогда вы можете проверить правильные сеансы в контроллере, который обрабатывает маршрут экспресс.

Обновленный ответ

Вот как я бы выполнил регистрацию пользователя управления

/**
 * Module dependencies
 */

var express = require('express'),
  http = require('http'),
  session = require('express-session'),
  app = module.exports = express();

/**
 * Configuration
 */

// all environments
app.set('port', process.env.PORT || 3000);
app.set('trust proxy', 1);
app.use(session({
  secret: 'keyboard cat',
  resave: false,
  saveUninitialized: true,
  cookie: {
    secure: true
  }
}));


function checkUserLoggedIn(req, res, next) {
  return req.session;
}
/**
 * Routes to control by default is logged in with a regular expression
 */
app.get('/user/:use_id/*', function (req, res, next) {
  if (checkUserLoggedIn(req)) {
    console.log('User logged');
    next();
  } else {
    console.log('error');
  }
});
/**
 * User Home
 */
app.get('/user/:use_id/home/', function (req, res, next) {
  if (checkUserLoggedIn(req)) {
    console.log('User logged goes to home');
    next();
  } else {
    console.log('error');
  }
});


/**
 * Home for user that is actually logged
 */
app.get('/guest/dashboard', function (req, res, next) {
  console.log('This is guest dashboard');
});

/**
 * Home for user that is actually logged
 */
app.get('/guest/home', function (req, res, next) {
  console.log('This is guest home');
});


/**
 * Start Server
 */
http.createServer(app).listen(app.get('port'), function () {
  console.log('Express server listening on port ' + app.get('port'));
});

Затем запустите

$node app.js

Перейдите в браузер и получите доступ к http://localhost:3000/home

Регулярное выражение, которое вы определили для управления '/*', получает всю маршрутизацию по умолчанию, а затем переходит к следующему маршруту, который соответствует, thats/home.

Это один из способов сделать это, возможно, есть лучший и более четкий способ решения этой проблемы. В регулярном выражении вы контролируете, что вы имеете в виду, с маршрутами по умолчанию и для каждого конкретного случая.