Satellizer 未向某些客户端发送身份验证标头



类似于这个问题。但OP表示,他的问题"自行解决"。

也与此类似。

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

我正在使用angularjs/laraavel进行一个项目。这是一个基于令牌的项目,所以我使用satellizer来处理它。

我们的一位客户遇到了无法登录的问题,这不仅不能在他的浏览器上工作。。。如果他在电脑上创建了一个新的用户帐户,它甚至都不起作用。

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

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

我不知道该怎么办,因为我觉得我已经尽力了。已尝试清理缓存并删除Cookie。检查Cookie是否被阻止(没有)。已检查是否安装了奇怪的防病毒、防火墙或奇怪的程序(无任何内容)。我还尝试重新启动系统,并为同一台计算机创建一个新的用户帐户,但没有成功。

它实际上在其他所有客户的电脑中都能工作,除了去年另一个客户(同一个项目)也发生了类似的事情,我们将其归咎于他的旧操作系统不支持卫星软件,但这次是最后一代电脑。此外,它曾经工作过,但突然停止了与他的电脑的工作。(可能在运行ccleaner之后)。

我的怀疑是,这实际上与他的电脑无关,而是卫星中的一个奇怪的错误,它会在一些棘手的条件下触发。

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

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

我仍然不知道发生这种情况的原因。

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

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之外,能够正确地设置标题。

在那之后,我取消了我的更改,看看在正确设置了标题后,satellizer是否会像预期的那样工作,而且它确实工作了,所以出于某种原因,它无法识别我的身份验证用户,并将标题排除在外,导致它失败。但在迫使它加上头球后,它每次都表现得很好。

希望这能帮助那些在类似问题上挣扎的人。

相关内容

最新更新