2016-08-18 2 views
1

Я внедрил pass.js во время входа в систему, я поместил свою функцию pass.authenticated() в промежуточное программное обеспечение.isAuthenticated return function false

app.post('/api/v1/login', 
     function (req, res, next) { 
      passport.authenticate('local-login', function (err, user, info) { 
       if (user == false) { 
        return res.json(ApiException.newNotAllowedError(api_errors.invalid_auth_credentials.error_code, null).addDetails(api_errors.invalid_auth_credentials.description)); 
       } 
       else { 
        next(); 
       } 
      })(req, res, next); 
     }, controllerIndex.auth.login); 

и логин успешно.

, когда я аутентифицирую другой запрос с помощью функции isAuthenticate(), он возвращает false.

Если я удаляю функцию промежуточного изделия из паспорта. Проверен, тогда другой запрос возвращает true. но мне нужна функция middleware, потому что возвращать пользовательский ответ пока пользователь не аутентифицирован. пожалуйста, помогите мне, что я реализую неправильно.

ответ

1

вы должны установить куки или убедитесь, что пользователь является Войти с помощью req.login

app.post('/api/v1/login', 
    function (req, res, next) { 
    passport.authenticate('local-login', function (err, user, info) { 
    if (user == false) { 
     return res.json(ApiException.newNotAllowedError(api_errors.invalid_auth_credentials.error_code, null).addDetails(api_errors.invalid_auth_credentials.description)); 
    }else{ 

    req.logIn(user, function(err) { 
     if (err) { return next(err); } 
     next(); 
    }); 

    } 
})(req, res, next); 
}, controllerIndex.auth.login); 
Смежные вопросы