2014-10-19 85 views
0

我正在尝试考虑使用Angular和远程服务器进行身份验证的方法。通常我在本地服务器上做的事情,就像他们在MEAN.IO中做的一样,检查是否有用户,如果是我把它放在全局窗口上,那就是我知道用户被认证的方式。来自远程服务器的AngularJS身份验证

例如laravel:

@if(Auth::check()) 
     <script> 
      var user= [[[Auth::user()]]] 
     </script> 
     @endif 

,它生存的刷新,因为IM在运行时检查它。

但现在服务器是远程的,我不得不做一些像获取请求一些URL/getUser。但那不是很好,因为所有的组件都将不得不等待响应返回,从而导致开发开销不一致和 。

那我该怎么办?

+0

尝试https://github.com/DaftMonk/generator-angular-fullstack - 我认为它有你想要的开箱即用 – 2014-10-19 19:07:40

+0

是的,我在过去使用这个生成器,它没有答案。 – Bazinga 2014-10-19 19:15:06

+0

当您通过GET/api/getUser获取用户后,您应该手动引导角度应用程序。我应该解释更多答案吗? – Max 2014-10-19 21:23:50

回答

0

您可以使用“解析”以避免更改当前的逻辑。

定义一个执行检查的安全服务,让我们说Security.getUser()并将其添加到您需要保护的每个路由的解析中。这样,只有用户已经检查过,你的控制器才会被加载。如果服务器将返回认证错误,请重定向到登录屏幕。

您可以从安全的角度讲我给goo.gl/kMvoFj 看看我的幻灯片或投奔我的github仓库(这还是很原始,但其主要思想是有)ng-secure,我认为它可以帮助你。

+0

但我需要发送每个我希望用户登录的状态的请求? – Bazinga 2014-10-20 05:49:48

+0

不,不会,你不需要。只需存储服务中返回的“用户”,并在已经存在的情况下返回用户并且不执行外部请求。 – 2014-10-20 08:02:39