Экспресс ресурсы с промежуточным ПО аутентификации? - PullRequest
4 голосов
/ 09 февраля 2012

Passport.js предлагает отличную аутентификацию для node.js и Express, включая решение промежуточного программного обеспечения:

ensureAuthenticated = function(req, res, next) {
  if (req.isAuthenticated()) {
    return next();
  }
  return res.redirect("/login");
};

Как я могу использовать это промежуточное ПО в модуле экспресс-ресурсов?К сожалению,

app.resource('users', ensureAuthenticated, require('./resources/users'));

не работает.

Ответы [ 6 ]

13 голосов
/ 26 июня 2012

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

Просто убедитесь, что удостоверение подлинности вызвано из паспорта.

    app.resource('users', passport.ensureAuthenticated, require('./resources/users'));

Находится здесь: https://gist.github.com/1941301

5 голосов
/ 28 февраля 2012

Обход.Обеспечьте аутентификацию для всех запросов и игнорируйте запросы, идущие в / auth и /auth/callback.

app.all('*', function(req, res, next) {
  if (/^\/auth/g.test(req.url)) {
    return next();
  } else if (req.isAuthenticated()) {
    return next();
  } else {
    return next(new Error(401));
  }
});
2 голосов
/ 03 сентября 2012

Вам нужно будет поработать над магией, чтобы каждый ресурс использовал промежуточное ПО аутентификации. Следующая суть объясняет, как этого добиться, используя структуру меню.

https://gist.github.com/3610934

По сути, вам нужна следующая логика:

app.all('/' + item.name + '*', ensureAuthenticated, function (req, res, next) {
  next();
});

Затем вы можете в своей структуре меню указать, какие ресурсы защищены, и если им требуются какие-либо особые разрешения, даже до уровня метода HTTP.

Надеюсь, это кому-нибудь поможет!

0 голосов
/ 07 января 2013

Я тоже искал эту тему и обнаружил https://npmjs.org/package/express-resource-middleware. Хотя я ее не проверял.

0 голосов
/ 28 февраля 2012

Это работает:

app.get ('/', sureAuthenticated, admin.index);

Пока ваша стратегия настроена правильно.Я использую местную стратегию.Проверьте руководство:

http://passportjs.org/guide/username-password.html

0 голосов
/ 10 февраля 2012

Я не уверен, есть ли у express-resource возможность вставки промежуточного программного обеспечения в определенные ресурсы, но вы всегда можете вставить проверку, если вы находитесь в этом ресурсе внутри промежуточного программного обеспечения.

ensureAuthenticated = function(req, res, next) {
  if (!/^users/.test(req.url) || req.isAuthenticated()) {
    return next();
  }
  return res.redirect("/login");
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...