![](/img/trans.png)
[英]how to use angular-ui modal templateURL with node/express routing
[英]How to combine passport and angular-ui routing
我想知道如何将角度ui路由与护照结合起来。 我找到的所有示例都使用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 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路由器便捷方法,它将呈现您定义的状态。
在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);
});
在这个例子中,我使用的是“本地登录”Passport策略,它在后台运行它的魔力。 如果用户通过身份验证,它将向Angular发回200,这将依次触发.success。 否则它将发送401 Unauthorized并关闭.error。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.