Javascript 来自远程服务器的AngularJS身份验证

Javascript 来自远程服务器的AngularJS身份验证,javascript,angularjs,Javascript,Angularjs,我正在考虑使用Angular和远程服务器进行身份验证的方法。通常我在本地服务器中所做的,就像他们在MEAN.IO中所做的一样,检查是否有用户,如果是,我将其放在全局窗口中,这就是我知道该用户已通过身份验证的方式 例如,在laravel中: @if(Auth::check()) <script> var user= [[[Auth::user()]]] </script> @endif 它在刷新后

我正在考虑使用Angular和远程服务器进行身份验证的方法。通常我在本地服务器中所做的,就像他们在MEAN.IO中所做的一样,检查是否有用户,如果是,我将其放在全局窗口中,这就是我知道该用户已通过身份验证的方式

例如,在laravel中:

  @if(Auth::check())
        <script>
            var user= [[[Auth::user()]]]
        </script>
        @endif
它在刷新后仍然存在,因为我也在运行时检查它

但是现在服务器是远程的,我必须做一些事情,比如获取对某个url/getUser的请求。但这并不好,因为所有的AngularJS 组件必须等待响应返回,从而导致不一致和 开发开销


那么我应该怎么做呢?

您可以使用resolve来避免更改当前的逻辑

定义一个执行检查(比如Security.getUser)的安全服务,并将其添加到需要保护的每个路由的解析中。这样,您的控制器将仅在用户已检查后加载。如果服务器返回身份验证错误,请重定向到登录屏幕

你可以从我做的一个有角度的演讲中查看我的幻灯片
或者浏览一下我的github存储库,它仍然非常原始,但主要的想法就在那里,我认为它可能会对您有所帮助

试试看-我想它有你想要的东西。是的,我过去使用过这个生成器,但它没有答案。当你通过get/api/getUser获得用户后,你应该手动引导angular应用程序。我应该在回答中解释更多吗?你正在使用ui路由器吗?因为在角度上,一切都是异步的,所以可以很好地控制它。如果您使用的是ui路由器,则在收到其他服务器的响应之前,您可能可以阻止路由更改。但是,我需要为我希望用户登录的每个状态发送请求?不,不,您不必这样做。只需将返回的用户存储在服务中,如果已经存在,则返回用户,而不执行外部请求。