2014-06-24 143 views
6

我正在学习节点和表达。我正在尝试构建一个非常基本的应用程序,它只是让用户使用json进行登录。然后将保持会话,直到他们注销。随着asp.net这是一个抄你设置好它在配置和调用...Passport.js会话混乱

Auth.Login(username,pasword) 

当他们注销你只是做:

Auth.logout() 

如果你需要检查他们登录你只需做:

Auth.IsLoggedIn() 

或代码为此。好像Passport for node并不那么简单。我花了整个晚上得到这个工作...

app.post('/authentication/login', function handleLocalAuthentication(req, res, next) { 

    passport.authenticate('local', function(err, user, info) { 

     // Manually establish the session... 
     req.login({username:'[email protected]',password:'password'}, function(err) { 
      if (err) return next(err); 
      return res.json({ 
       message: 'user authenticated' 
      }); 
     }); 

    })(req, res, next); 
}); 

app.get('/authentication/isauthenticated',function(req,res){ 

    console.log(req.isAuthenticated()); 

}) 

passport.use(new LocalStrategy(
    function(username, password, done) { 

     return done(null, {username:'ss',password:'sffds'}); 
    } 
)); 

所以现在我有没有饼干,没有会话坚持,当我登录,然后打/authentication/isAuthenticated网址。我甚至不能在战略中得到一个断点......

passport.use(new LocalStrategy(
    function(username, password, done) { 

     console.log('ggg'); 
     return done(null, {username:'ss',password:'sffds'}); 

    } 
)); 

我在寻找这个错误的解决方案吗?我应该使用基本的中间件功能来滚动我自己的认证吗?

回答

3

结账this tutorial。这真的很棒,它对我有很大的帮助。

这里是我的回购,它已通过mongoose存储在mongodb中的用户实施了护照认证,并对密码进行了散列处理。克隆它或只是检查出来,它应该有所帮助。 https://github.com/thyforhtian/auth_base

+0

谢谢这真的帮了我。 – Exitos

+0

我很高兴它做到了。谢谢 – thyforhtian

+0

@thyforhtian“本教程”的链接似乎被破坏 – peralmq