gpt4 book ai didi

angularjs - 将 $state.current (ui-router) 获取到 $http 拦截器

转载 作者:行者123 更新时间:2023-12-02 22:52:05 27 4
gpt4 key购买 nike

我想要实现的目标

我想在我的 $http 拦截器中获取当前状态的数据值。我已经创建了拦截器。

问题

我不知道如何在拦截器中捕获 $state.current.data 。我尝试使用 $injector.get($state) 但无法读取对象的属性。

 angular.module('mymodule').factory 'HttpInterceptor', [
'$location', '$injector'
($location, $injector) ->

request: (config) ->
# Do something when sending the request
console.log(config.headers.hasOwnProperty('Authorization'))
if config.headers.hasOwnProperty('Authorization') == false
$location.url("/login")
config

最佳答案

我也许可以让您了解如何通过运行 block 实现它。

app.run(function (StateInterceptor, FPSSO, HTTPResponseCode, $state, SessionManager, notifications, Utils, $timeout) {
StateInterceptor.startService();

var httpSecurityInterceptor = function(response, deferred){
var propagatePromise = true;
switch(response.status){
case HTTPResponseCode.UNAUTHORIZED:
SessionManager.Logout();
notifications.showErrorMessage("Your session has expired. Please sign in again.", "Error");
$state.go('Logout', {isLogout: true, returnUrl: $state.current.name});
propagatePromise = false;
break;
default:
var res = Utils.ExtractResponse(response);
res.status = response.status;
deferred.reject(res);
}
return propagatePromise;
}

FPSSO.API.setErrorInterceptor(httpSecurityInterceptor);

您可以看到,在 switch 语句的未经授权的情况下,我能够访问 $state.current 并将我的应用程序路由到“注销”。这是部署在生产环境中的代码,因此我非常确定它可以工作。

尝试实现类似的目标。

关于angularjs - 将 $state.current (ui-router) 获取到 $http 拦截器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22101646/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com