我正在使用Angular.js,passport和connect-ensure-login工作在node.js应用程序上。
仅在刷新(F5)时,ensureLoggedIn中的重定向似乎工作,我进入登录页面,否则我认为单页应用程序的routeProvider只接管正常点击,我到 localhost:3000 / users 仍然是来自'/ api / users'的500错误。
如何让 connect-ensure-login (ensureLoggedIn)同时适用于直接路径和点击?
app.get('/users', ensureLoggedIn('/login'))
对于API,我正在使用
app.get('/api/users',
passport.authenticate('bearer'),
...
应用程序的routeProvider代码段:
.config(function($routeProvider, $locationProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/home.html'
})
...
参考文献:
答案 0 :(得分:1)
您可能希望通过使用$httpProvider.interceptors
来解决此问题。
在您的情况下,您可以发现来自500
的{{1}}错误(尽管可能更好地返回/api/users
或401
)并拦截并接受拦截用户403
。
这是官方文件:
http://docs.angularjs.org/api/ng/service/ $ HTTP#拦截器
这是一个更具体的例子:
http://blog.thesparktree.com/post/75952317665/angularjs-interceptors-globally-handle-401-and-other
这是一个类似的答案。