반응형

*req.isAuthenticated() always false

로그인 시 form이 아닌 ajax로 메소드 호출 시 req.isAuthenticated() 함수가 동작하지 않는다. req.user 에도 정보가 담기지 않는다. (전체 예제는 따로 정리해서 올리겠습니다.) 핵심은 req.login() 함수를 직접 호출해서 해결 할 수 있습니다.

http://www.passportjs.org/docs/login/

 

Documentation: Log In

Log In Passport exposes a login() function on req (also aliased as logIn()) that can be used to establish a login session. req.login(user, function(err) { if (err) { return next(err); } return res.redirect('/users/' + req.user.username); }); When the login

www.passportjs.org

// Front 
$.ajax({
	url:'/users/login',
    xhrFields:{
    	withCredentials: true
    },
    type:'POST',
    data:{username:id,password:pw},
    dataType:'json',
    success:function(data){
    	// success 처리
    },error: function(err){
    	// error 처리
    }
})
// Back
router.post('/login', async function (req, res, next) {
  passport.authenticate("local-login", function (error, user, info) {
    if (error) {
      return res.status(500).json(error);
    }
    if (!user) {
      return res.status(401).json(info.message);
    }

    req.login(user, function (err) {
      if (err) { return next(err); }
      return res.json(user);
    });
  })(req, res, next);
});

 

반응형

'Web > node.js' 카테고리의 다른 글

Selenium Javascript Screenshot  (0) 2021.05.10
nodejs readdirSync recursive  (0) 2019.06.04
Posted by kev1n
,