Intereting Posts
Можно ли показать фактический прогресс от метода Async в Node.Js Несколько запросов счетчика мангуста () в MongoDB Узел, Mongoose – невозможно получить доступ к родительской области в обратном вызове запроса Не удается выполнить приложение Node.js на Heroku (сбой каждый раз) Нужен ли мне Oauth2 для моего API веб-приложений Как я могу уловить ошибки node.js / express сервера, такие как EADDRINUSE? Рекурсивно извлекать содержимое (вложенных) круглых скобок в строке Express cookieSession и Mongoose: как я могу заставить request.session.user быть моделью Mongoose? Node.js: 301 redirect без www без express Отображать только желаемые параметры Использование фантома в веб-узле узла node.js: служить файлу (в частности, apk) при успешной аутентификации по запросу get Mongoose и обещания: как получить массив результатов запроса? Автоматический ввод текста в консоль с помощью Node.js Отправить дополнительные заголовки http с помощью Express.JS

Как совместить паспорт и угловую маршрутизацию

Мне интересно, как я могу комбинировать угловую маршрутизацию с паспортом. Все примеры, которые я нахожу, используют там routing node.js.

var routerApp = angular.module('routerApp', ['ui.router']); routerApp.config(function($stateProvider, $urlRouterProvider) { $urlRouterProvider.otherwise('/home'); $stateProvider .state('home', { url: '/home', templateUrl: 'partial-home.html' }) .state('about', { // for example just show if is loggedIn }); 

Как реализовать эту функцию в приведенном выше fragmentе?

 function isLoggedIn(req, res, next) { // if user is authenticated in the session, carry on if (req.isAuthenticated()) return next(); // if they aren't redirect them to the home page res.redirect('/'); } 

Спасибо за каждый намек

Один из способов начать – создать службу в Angular, которая использует $ http для достижения вашей конечной точки в Express. $ http возвращает promise с успехом и методы ошибок, которые вы можете использовать для изменения состояния. Если вы создаете приложение с одной страницей (SPA), это, вероятно, все, что вам нужно знать. Например:

 // An Angular service that talks to Express UserService.$inject = ['$http', '$state']; function UserService($http, $state) { this.loginUser = function (user) { $http.post("/api/login", user) .success(function (data, status) { console.log('Successful login.'); console.log('data = ' + data); console.log('status = ' + status); $state.go('welcome'); // }) .error(function (data) { console.log('Error: ' + data); $state.go('somewhereelse'); }); }; 

$ state.go – это удобный метод UI Router, который отобразит ваше определенное состояние.

В Express вы захотите написать свою собственную функцию обратного вызова для Passport, чтобы контролировать возвращаемое. Например:

  // Express Route with passport authentication and custom callback app.post('/api/login', function(req, res, next) { passport.authenticate('local-login', function(err, user, info) { if (err) { return next(err); } if (user === false) { res.status(401).send(info.message); } else { res.status(200).send(info.message); } })(req, res, next); }); 

В этом примере я использую страtagsю паспорта «локального входа», которая работает в фоновом режиме. Если пользователь аутентифицирован, он отправит 200 обратно в Angular, что в свою очередь приведет к запуску .success. В противном случае он отправит 401 Unauthorized и сработает .error.