Ответ 1
Благодаря Kasper Isager в ближайшем будущем появится паспортный генератор для sails.js(версия Sails.js 0.10).
Он реализует паспорт с использованием политик (промежуточное ПО парусов).
апи/услуги/passport.js
var passport = require('passport');
passport.serializeUser(function(user, next) {
next(null, user.id);
});
passport.deserializeUser(function(id, next) {
User.findOne(id).done(next);
});
// Put your Passport config logic here
// Make passport globally available
module.exports = passport;
апи/политика/passport.js
module.exports = function (req, res, next) {
// Initialize Passport
passport.initialize()(req, res, function () {
// Use the built-in sessions
passport.session()(req, res, function () {
// Make the user available throughout the frontend
res.locals.user = req.user;
next();
});
});
};
конфигурации/policies.js
module.exports.policies = {
'*': [ 'passport' ],
// MyCustomController: {
// update: [
// 'passport',
// 'authorize'
// ]
// }
};
Это сделает методы запроса паспорта (logIn и т.д.) доступными также в запросах сокетов.
После успешного входа ваш серверный объект сеанса будет выглядеть следующим образом:
{
// Express
cookie: {
originalMaxAge: null,
expires: null,
httpOnly: true,
path: '/'
},
// Passport
passport: {
user: '52fc98e108b31348a537fa43' // userId
}
}
Вы можете получить к нему доступ в любой политике с помощью req.session
или даже при обратных вызовах сокета, например:
конфигурации/sockets.js
onConnect: function(session, socket){}
onDisconnect: function(session, socket){}
Если вы хотите, чтобы полная реализация Kaspers проверила его репозиторий: sails-generate-auth