如何结合护照和angular-UI路由

我想知道如何将angular度路由与护照相结合。 我find的所有示例都使用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 }); 

如何在上面的代码片段中实现这个function?

 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中创build一个服务,使用$ http命令在Express中启动您的端点。 $ http返回一个承诺,成功和错误的方法,你可以用来改变状态。 如果你正在build立一个单页面应用程序(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路由器的便捷方法,将呈现您定义的状态。

在Express中,您需要为Passport编写自己的callback函数来控制返回的内容。 例如:

  // 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); }); 

在这个例子中,我使用的是“本地login”护照策略,它在后台运行起来很神奇。 如果用户通过身份validation,则会向Angular发送一个200,然后触发.success。 否则,它会发送一个401未经授权,并引发错误。