raj*_*jan 3 angularjs sails.js passport.js
我试图通过这样的请求为当前用户提出问题:
http://localhost:1337/question/forme
Run Code Online (Sandbox Code Playgroud)
作为GET请求的一部分,我可以访问req.user.username并在从浏览器访问时提供JSONresponse.
当我尝试从我的Angular client.js文件发出相同的Socket.get()请求时,它不起作用.我还试图使用浏览器控制台访问它,它对socket.get()请求失败.
我花了很长时间弄清楚所有活动部件,以便在我的博客上使用护照工作
我将重新发布以下相关部分,并进行额外的政策更改.
我创建了一个passport.js文件来管理我的护照配置/策略注册
/config/passport.js
var passport = require('passport'),
LocalStrategy = require('passport-local').Strategy;
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findOneById(id).done(function (err, user) {
done(err, user);
});
});
passport.use(new LocalStrategy({
usernameField: 'email',
passwordField: 'password'
},
function(email, password, done) {
User.findOne({ email: email}).done(function(err, user) {
if (err) { return done(err); }
if (!user) { return done(null, false, { message: 'Unknown user ' + email }); }
if (user.password != password) { return done(null, false, { message: 'Invalid password' }); }
return done(null, user);
});
}
));
Run Code Online (Sandbox Code Playgroud)
然后我使用策略来验证身份验证.如果发出套接字请求,它会使用护照会话.
/api/policies/isAuthenticated.js
module.exports = function(req, res, next) {
// User is allowed, proceed to the next policy,
// or if this is the last policy, the controller
// Sockets
if(req.isSocket)
{
if(req.session &&
req.session.passport &&
req.session.passport.user)
{
//Use this:
// Initialize Passport
sails.config.passport.initialize()(req, res, function () {
// Use the built-in sessions
sails.config.passport.session()(req, res, function () {
// Make the user available throughout the frontend
//res.locals.user = req.user;
//the user should be deserialized by passport now;
next();
});
});
//Or this if you dont care about deserializing the user:
//req.user = req.session.passport.user;
//return next();
}
else{
res.json(401);
}
}
else if (req.isAuthenticated()) {
return next();
}
else{
// User is not allowed
// (default res.forbidden() behavior can be overridden in `config/403.js`)
return res.redirect('/account/login');
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1943 次 |
| 最近记录: |