我的解决方案是结合
$locationChangeStart和
$routeChangeStart:
$rootScope.$on('$locationChangeStart', function (event) { //If login data not available, make sure we request for it if($facebook.isConnected()==null) { $facebook.getLoginStatus(); event.preventDefault(); return; } var next=parseRoute().$$route; if(!Auth.loginCheck(next)) event.preventDefault();});我parseRoute()
从复制,angular-route.js
以解析给定的URL进行路由。
然后,
Auth.loginCheck以某种方式构建我的登录检查处理程序(),如果失败,则返回false。
我还使用它
$routeChangeStart来处理
$route.reload()事件,所以现在在身份验证状态内的每次更改之后,我都要做
$route.reload():
$rootScope.$on('$routeChangeStart', function (event, next) { Auth.loginCheck(next);});最后,我只是使用简单的
run()方法来确保始终运行此定制服务。
编辑:
现在,我们使用ngAuth,这是一个旨在解决该确切问题的模块(基于我之前在此处给出的答案)。
最后,我们开发了一个可解决此问题的角度模块。该模块基于我之前在此处发布的答案。
由于这里的要求,我们发布了一个现在可以使用的beta版本:http :
//github.com/GoDisco/ngAuth
随意使用它。



