Satellizer不会向某些客户端

时间:2017-01-20 07:52:18

标签: angularjs authentication http-headers satellizer

this question相似。但是OP表示他的问题已经解决了#34;

也类似于this

(我将复制粘贴描述的某些部分,因为它几乎是同样的问题)

我正在使用angularjs / laravel开展项目。它是一个基于令牌的项目,所以我使用卫星来处理它。

我们的一位客户遇到无法登录的问题,它不仅没有在他的浏览器上工作......如果他在他的计算机上创建一个新的用户帐户,它甚至无法工作

问题在于它没有向服务器发送授权令牌,有效令牌存储在本地会话中,但是它没有在头部中发送。此外,我无法手动设置标题。

在dev工具的网络选项卡中查看请求标头时,我可以看到该请求不包含授权标头。

因为我觉得我尽我所能,我迷失了该做什么。 试图清理缓存并删除co​​okie。检查cookie是否被阻止(他们不是)。检查是否安装了奇怪的防病毒,防火墙或奇怪的程序(没有)。我也尝试重新启动系统并为同一台计算机创建一个新用户帐户,但没有任何效果。

它实际上适用于所有其他客户端的PC,除了去年类似的事情发生在另一个客户端(同一个项目),我们把它归咎于他的旧操作系统不支持卫星的东西,但这一次它' sa last gen pc。 它也常常工作并突然停止使用他的电脑。 (在运行ccleaner之后)。

我怀疑它并不是真的与他的电脑有关,而是在一些棘手的情况下触发的卫星中的一个奇怪的错误。

我希望至少有人知道我可以从哪里开始寻找这个问题的答案。

这也是我第一次在这里发帖提问......(感到害羞),嗨。 (帮助)

1 个答案:

答案 0 :(得分:0)

我仍然不知道为什么会发生这种情况。

最后,我通过编辑部分卫星源代码解决了这个问题。

if (_this.SatellizerShared.isAuthenticated() && _this.SatellizerConfig.httpInterceptor()) {
                    var tokenName = _this.SatellizerConfig.tokenPrefix ?
                        [_this.SatellizerConfig.tokenPrefix, _this.SatellizerConfig.tokenName].join('_') : _this.SatellizerConfig.tokenName;
                    var token = _this.SatellizerStorage.get(tokenName);
                    if (_this.SatellizerConfig.tokenHeader && _this.SatellizerConfig.tokenType) {
                        token = _this.SatellizerConfig.tokenType + ' ' + token;
                    }
                    config.headers[_this.SatellizerConfig.tokenHeader] = token;
                }

Satellizer没有设置标题,所以我补充说:config.headers[_this.SatellizerConfig.tokenHeader] = token; 在if和卫星之外能够正确设置标题。

之后,我解除了我的更改,看看在正确设置标题之后,satellizer是否会按预期工作并且它有效,所以由于某种原因,它无法识别我的经过身份验证的用户并将标题排除在外使其失败。但是一旦它在之后的每一次工作都很好,强迫它添加标题后。

希望这可以帮助有人解决类似的问题。