问题标签 [angular-http-auth]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Angularjs - 在 $routeChangeError 之后删除最后一个历史条目
我有route
一个resolve
服务器端资源。该资源要求进行身份验证。所以我显示了一个可以取消的登录表单弹出窗口。取消时,路由/解析会正确获取rejected
并$routeChangeError
触发。
问题是,我现在在地址栏中有那个失败的位置/网址和一个不必要的历史条目。
如何在不重新加载的情况下将当前位置 url 替换为最后一个?以及如何在路由更改失败后删除当前的历史记录?
编辑:我使用 angular-http-auth。这是我的路由:
/home
> /item
(必须解决需要身份验证的资源,当未登录时,会打开一个登录表单弹出窗口,可以取消)
当我取消身份验证时,会触发 $routeChangeError 并且/home
由于/item
从未渲染,我仍在页面上。现在地址栏显示一个错误的 url:/item
angularjs - 使用 angular-http-auth 显示登录窗口时量角器 sendKeys 失败
我正在使用 angular-http-auth 和http://witoldsz.github.io/angular-http-auth/中的示例来显示我的登录表单。
这是 index.html 页面:
它在这样的指令中处理:
在我的 Protactor 测试中,我通过单击发出受保护的 http 请求的菜单项来触发登录事件。服务器以 401 响应,并且 angular-http-auth 广播event:auth-loginRequired
上面处理的事件。
测试失败:
第 23 行是:usernameInput.sendKeys('admin');
如果我取消注释browser.sleep(500)
..,这个测试将起作用。我相信这是因为指令中的 jqueryslideDown
到那时已经完成。
有没有另一种方法可以在没有睡眠的情况下做到这一点?我可以改用角度动画还是以某种方式阻止测试直到event:auth-loginRequired
处理完?
angularjs - angular-http-auth 与 $http transformResponse
每当从服务器返回 401“未经授权”响应时,我都会使用angular-http-auth显示登录对话框。
由于我很酷,我还尝试在我的服务中反序列化响应对象。例如,如果一个服务请求 acar
并且响应是{make: Honda, model: Civic}
,我尝试将它反序列化为一个Car
使用transformResponse
.
例如:
这不适用于angular-http-auth。如果响应是 401 Unauthorized,您将收到一个 javascript 错误。transformResponse
这是因为即使响应是 401 ,Angular 也会尝试运行该代码。
事实证明,$http
拦截器(这是angular-http-auth使用的)在transformResponse
代码之后运行。transformResponse
这是一个大问题,因为如果服务器响应是 401(不会有任何 401 data
),那么这些代码都不会起作用
这对其他人来说是个问题吗?你是怎么解决的?transformResponse
如果我使用$http
拦截器,我不使用吗?
angularjs - 带有 angular-http-auth 的 Restangular 不起作用
我一直在使用Angular-HTTP-Auth和基本的 http 请求,但后来搬到了 Restangular,现在发现 401 不再被 HTTP-Auth 捕获。我假设这是因为没有使用 Angular http 方法或以某种方式被拦截。有没有办法让这些再次一起工作?我知道 Restangular 暴露了拦截器,但我不确定 2 需要如何操作。
angularjs - angularjs基本身份验证标头
我正在尝试连接到 API 并发送身份验证标头。我正在使用此处描述的 Base64如何在 angularjs 中获得基本身份验证?
但我收到了这个错误
XMLHttpRequest 无法加载https://.../Category.json?callback= ?。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问来源“ http://....com ”。响应的 HTTP 状态代码为 400。
angularjs - 没有拦截器的AngularJS错误代码401处理?
以下是我使用的代码,如果基本身份验证成功,我会收到身份验证成功警报,但是当凭据错误时,永远不会显示 else 警报“身份验证失败”。我不使用任何路线,也不需要使用拦截器。有没有办法在不使用拦截器的情况下获得 401 错误?
在控制器中:
angularjs - 使用 auth-http-interceptor 广播 login-confirmed
我正在使用 auth-http-interceptor 广播登录确认。我有一个 main.html 应该检查用户是否登录。
和指令
和登录控制器
1) 但是,我没有获得任何 console.logs。我的代码有什么问题吗?
2)我是对的,登录确认只被触发一次,而不是在我的登录会话中多次触发?
angularjs - AngularJS:使用身份验证标头获取受保护的 JSON
我有一个由服务器生成的 JSON 文件,要通过浏览器中的 URL 访问该 JSON,我需要登录并提供用户名和密码。
现在我正在尝试使用 Angular 获取 JSON,尽管找不到有效的解决方案。我已经拥有的:
这会在控制台中产生错误:
“未捕获的语法错误:意外的令牌”
和“资源解释为脚本,但使用 MIME 类型 text/json 传输:“myURLwithUserAndPass?callback=angular.callbacks._0”。
我尝试在配置中添加身份验证标头,如下所示:
……但这无济于事。我也试过像这样在 URL 中传递用户名和密码:
有关如何访问该 JSON 的任何帮助?
angularjs - 当身份验证失败时,Angular $http 拦截器会打开多个模式
我正在使用来在失败$http interceptor
时显示登录模式。$auth
这是我的简要设置:
上面的代码工作正常。但是我遇到的问题是当api抛出多个身份验证失败错误时,拦截器同时打开了多个模态。通常在一页中,我可能有 2-3 次各种服务联系后端 api,当身份验证失败时,所有这些 api 在无效令牌期间返回身份验证失败错误。该拦截器将其作为 3 个 take_invalid 错误拾取,并在彼此之上显示 3 个登录模式 1。我该如何防止这种情况?
无论身份验证失败发生多少次,如何确保拦截器仅显示 1 个登录模式?
我的服务看起来像这样:
在服务中,我试图$rootScope.loginProgress
用作一个开关来确定登录模式是否打开。$rootScope.loginProgress
但是,如果模式已经打开(何时为真),我不确定如何返回一个空的承诺。
angularjs - 在 Angular 中设置和覆盖请求标头的正确方法
由于我们使用的身份验证方法,我需要为我的所有请求设置一个全局 http 标头。我们有一个身份服务器来使用 SSO 方法对用户进行身份验证。到目前为止一切顺利,我们使用拦截器来全局设置标头。但有时我们需要向不使用任何身份验证方法的第 3 方 API 发出请求。如何覆盖拦截器配置的身份验证标头?这是解决此问题的推荐方法吗?