我正在基于angular.js + node.js
和mongodb
使用快速模板的简单博客网站上工作。 我用$http
从角度控制器通过POST方法命名为一个名为users.js
的API,其中登录使用passport.authenticate
方法进行验证。 我需要护照本地登录策略users.js
。
但它不工作。有角度登录服务代码和节点用户API代码。 任何人都可以告诉我如何在角度和节点中使用passport.js
?在用户如何使用角度节点应用程序的护照?
通过服务角路由
app.service('Auth',function($location,$http,$localStorage){
var userLogin ;
return{
setLogIN:function(email,password){
$http({
method: 'POST',
url: '/users/login', //users.js having node routing.
data: {email:email, password:password},
})
节点路由
router.post('/login',passport.authenticate('local', {
// use passport-local for authentication
successRedirect : '/profile',
failureRedirect : '/login',
failureFlash : true
}));
护照局部策略
app.use(passport.initialize());
app.use(passport.session());
passport.use(new LocalStrategy(
function (username, password, done) {
User.findOne({username: username}, function (err, user) {
if (err) {
return done(err);
}
if (!user) {
return done(null, false, {alert: 'Incorrect username.'});
}
if (user.password != password) {
return done(null, false, {alert: 'Incorrect password.'});
}
return done(null, user);
});
}
));
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
function isAuthenticated(req,res,next){
if(req.isAuthenticated())return next();
res.redirect('/');
}
所以我想使用护照进行身份验证,但使用客户端模板/路由来保持正确的身份验证。
有人可以请指出我在正确的方向吗?或者告诉我,我所做的是完全错误的?
编辑:我跟我的代码得到的错误是它不是重定向到的个人资料页
TypeError: POST http://localhost:3000/users/login 500 Internal Server Error
Not a valid User
发表您的身份验证策略也的代码。 – ayushgp