Ответ зависит от вашей стратегии аутентификации т.е. вы используете идентификаторы сеанса, токены и т.д.
В любом случае, Я предлагаю вам разблокировать учетную запись (aka login) из аутентификации. Они должны быть отдельными промежуточными функциями. Ниже приведен пример того, как это выглядит.
Хотя это отвечает на ваш вопрос, характерный для ExpressJS, он не содержит много других деталей, которые имеют значение при создании системы аутентификации (например, как безопасно хранить пароли). Я работаю в Stormpath, мы предоставляем управление пользователями как API, так что вам не нужно беспокоиться обо всех подробностях безопасности! Очень легко интегрировать наш API в ваше приложение, используя модуль express-stormpath. У вас будет полнофункциональная пользовательская база данных за считанные минуты, без необходимости настройки mongo или таблицы пользователей.
Все, что сказал, вот пример:
/* pseudo example of building your own authentication middleware */
function usernamePasswordExchange(req,res,next){
var username = req.body.username;
var password = req.body.password;
callToAuthService(username,password,function(err,user){
if(err){
next(err); // bad password, user doesn’t exist, etc
}else{
/*
this part depends on your application. do you use
sessions or access tokens? you need to send the user
something that they can use for authentication on
subsequent requests
*/
res.end(/* send something */);
}
});
}
function authenticate(req,res,next){
/*
read the cookie, access token, etc.
verify that it is legit and then find
the user that it’s associated with
*/
validateRequestAndGetUser(req,function(err,user){
if(err){
next(err); // session expired, tampered, revoked
}else{
req.user = user;
next();
}
});
}
app.post('/login',usernamePasswordExchange);
app.get('/protected-resource',authenticate,function(req,res,next){
/*
If we are here we know the user is authenticated and we
can know who the user is by referencing req.user
*/
});
что вы подразумеваете под макияж использования? если вы хотите запретить кому-либо публиковать данные, вы можете использовать промежуточное программное обеспечение только для сообщений. как ... 'app.post ('/', yourRestrictionFunction)' – Pravin