我处于死路一条,因为我知道Javascript并不是用于同步工作,特别是不是用于AngularJS。但是,我处于一种需要它的状态。
我在域名“www”(带有AngularJS)上有一个主页,这个页面调用了很多“api”。 “api”上的一些资源需要身份验证,因此它会返回401,而AngularJS会在它看到时接收并显示登录框。
www登录支持一堆登录方法,并将密码/ oauth /无论发送到“api”,它返回角应用程序存储在cookie中的令牌,并设置在$http.defaults.headers.common['Authorization']
中,以便它可以使用验证对api的进一步请求。
同样的方法也用于获取属于api-token的用户名。
这工作完美,解决了我的设计目标。但是,如果浏览器转到需要验证的网址,则401(因此弹出登录框)。这是(我猜),因为角度是不能够填充401之前浏览器的标题中的授权字段..
解决方案?
- 有一个使用jquery的async = false请求吗?
- 当我们完成获取我们想要的数据时关闭登录框。登录框可能会闪烁......
- 在cookie中存储更多关于登录(即用户名)的元数据,因此我们不必在应用程序加载时从服务器获取此信息。
- ??
有没有更好的解决方案?这一次,对于这一个请求,我想在我的Angular资源中使用async = false ...