#angularjs #express #mean-stack #passport.js
#angularjs #экспресс #средний стек #passport.js
Вопрос:
Я пытаюсь добавить аутентификацию Google с помощью passport в свое приложение, которое было сгенерировано с помощью yeoman fullstack-generator.
Внутри моего контроллера входа в систему у меня есть этот запрос:
$scope.googleAuth = function(){
$http.get('/auth/google');
};
но когда я вызываю эту функцию, у меня возникает эта ошибка:
XMLHttpRequest cannot load https://accounts.google.com/o/oauth2/auth?response_type=codeamp;redirect_uri=h…d=<my-client-ID-here>. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9000' is therefore not allowed access.
Я попытался исправить эту проблему, добавив промежуточный слой в мой express.js файл:
app.use(function (req, res, next) {
// Website you wish to allow to connect
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:9000');
// Request methods you wish to allow
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
// Request headers you wish to allow
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
// Set to true if you need the website to include cookies in the requests sent
// to the API (e.g. in case you use sessions)
res.setHeader('Access-Control-Allow-Credentials', true);
// Pass to next layer of middleware
next();
});
но это все еще не работает.
Правильное ли это решение? и безопасно ли это?
Ответ №1:
Я исправил проблему, используя гиперссылку вместо кнопки следующим образом
<a target="_self" href="/auth/google" class="btn btn-danger">Google </a>
Я использовал target="_self"
в противном случае угловые перенаправления на домашнюю страницу, потому что, я думаю, он рассматривает /auth/google
как маршрут моего приложения.
Комментарии:
1. Как вы передаете результат аутентификации (т.Е. Пользовательский объект) Обратно на ваш контроллер?
2. 1 Спасательный круг.. Потратьте на это более 3 часов. 🙂 Огромное спасибо.