Я столкнулся с проблемой, когда req.user
не определен при выполнении вызова API с $ http в angularJS. Странно то, что если я войду с Почтальоном, а затем позвоню на мою защищенную конечную точку, будет определено req.user
, и аутентификация будет работать, как и ожидалось.
Защищенная конечная точка /activities
(здесь req.user не определен при использовании $ http):
var isAuthenticated = function (req, res, next) {
if (req.isAuthenticated())
return next();
res.redirect(process.env.BASE_CLIENT_URL + 'login');
}
router.get('/activities', isAuthenticated, activityController.getActivities);
Angular Controller, на который я перенаправляю после успешного входа в паспорт, в основном при загрузке этой страницы я звоню на мою /activities
конечную точку:
angular.module('myApp.view2', ['ngRoute'])
.config(['$routeProvider', function ($routeProvider) {
$routeProvider.when('/view2', {
templateUrl: 'view2/view2.html',
controller: 'View2Ctrl'
});
}])
.controller('View2Ctrl', ['$scope', '$http', function ($scope, $http) {
$scope.$on('$viewContentLoaded', function (event) {
$http({
method: 'GET',
url: 'http://localhost:8000/api/activities',
withCredentials: true
}).then(function successCallback(response) {
console.log("Success!");
}, function errorCallback(response) {
console.log("Error");
});
});
}]);
Есть мысли? Я не уверен, почему он работает должным образом через API-клиент, такой как Postman, но не работает в моем приложении angularJS, я пропускаю определенные заголовки?
Спасибо!
Обновление:
Заголовки из $ http запроса:
accept:"application/json, text/plain, */*"
accept-encoding:"gzip, deflate, br"
accept-language:"en-US,en;q=0.9"
cache-control:"no-cache"
connection:"keep-alive"
cookie:"connect.sid=s%3AFvUCnqkLyGKh6rZh41nU0oXDFiRpu3pZ.74Oit3DNmizkCyvGId1%2F%2FNbLQlichVM6HEHfh3MLS3g"
host:"localhost:8000"
pragma:"no-cache"
referer:"http://localhost:8000/"
user-agent:"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
Заголовки из Restlet:
{"params":{"headers":["Host: localhost:8000","Connection: keep-alive","User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36","Accept: */*","Accept-Encoding: gzip, deflate, br","Accept-Language: en-US,en;q=0.9","Cookie: [331 bytes were stripped]","If-None-Match: W/\"44faa272a8181008d08c6051967c5c38\""],"line":"GET /api/activities HTTP/1.1\r\n"},"phase":0,"source":{"id":819156,"type":1},"time":"496058853","type":159}
Может возникнуть проблема с логином при запуске через приложение. Если я войду в систему с Почтальоном и ТОГДА осуществлю звонок на мою конечную точку /activities
, она будет успешной. Тем не менее, выполнение входа в систему и совершение звонка на конечную точку /activities
через мое приложение - это когда я сталкиваюсь с проблемой.