2015-11-01 2 views
0

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

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

ответ

0

Я бы использовал: 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')); 
}); 

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

$ узел app.js

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

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

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

+0

Кажется, этот случай похож на это: http://stackoverflow.com/questions/18739725/how-to-know-if-user-is-logged-in-with-passport-js На конец вам не нужен cujojs/meld, как объясняется в этой связанной проблеме. –

+0

Но это промежуточное программное обеспечение, которое вы написали, помещено в маршруты, которые необходимо защитить? Я прошу о том, чтобы по умолчанию требовать, чтобы все маршруты были защищены, и делайте исключения только для тех, которые не нуждаются в защите. – user779159

+0

Я добавил пример кода, вы можете управлять по умолчанию для всех маршрутов, вы можете определить свои собственные критерии по умолчанию с reg exp. Элемент управления сеансом очень прост, но вы можете просто поставить критерии, которые вы хотите, в этом случае. –

Смежные вопросы