我正在使用Angular.js,password和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'
            })
            ...

参考文献:

https://www.npmjs.org/package/connect-ensure-login

http://passportjs.org/

===============>>#1 票数:1 已采纳

您可能想通过使用$httpProvider.interceptors解决此问题。

在您的情况下,您可能会捕获到来自/api/users500错误(尽管返回401403可能更好),并且拦截器启动并将用户带到/login

这是官方文档:

http://docs.angularjs.org/api/ng/service/ $ http#interceptors

这是一个更具体的示例:

http://blog.thesparktree.com/post/75952317665/angularjs-interceptors-globally-handle-401-and-other

这是一个类似的答案。

https://stackoverflow.com/a/18764801/115015

  ask by bcm translate from so

未解决问题?本站智能推荐: