【问题标题】:Adding Custom Header in AngularJs upon bootstrapping引导时在 AngularJs 中添加自定义标题
【发布时间】:2014-10-06 18:45:21
【问题描述】:

假设我有一个名为 chococalateApp 的 Angular 应用程序,它依赖于 3 个其他模块,即 ProductSalesLogIn

现在,我的应用基于 RESTful API 构建。成功登录后,服务器将通过发回身份验证令牌进行响应。每当使用$http 服务时,我想将此令牌附加为自定义标头X-AUTH。由于我所有的 REST API 都需要身份验证令牌,因此我需要在每个 $http 请求中附加此标头。这可以通过配置 $httpProvider 来实现,如下所示:

angular.module('chocolateApp',['Product','Sales','Login'])
  .config(['$httpProvider', function($httpProvider){
     $httpProvider.defaults.headers.common['X-AUTH'] = 'randomkeybyserver'
 }
])

我的问题是,我可以在模块被引导之后注入 auth-token 的值 AFTER 吗?

例如,我在LogIn 模块中有一个服务,它能够进行身份验证,并检索到所需的令牌。如何将令牌传递回我的主 chocolateApp 模块并进行配置?这会导致循环依赖,还是我对 DI 的理解在这里是错误的?

如果这无法实现,应该如何设计?

【问题讨论】:

    标签: angularjs authentication dependency-injection auth-token


    【解决方案1】:

    您可以在身份验证后通过您的Login 服务执行此操作,它将在您的应用中可用。

    login: function(...) {
        $http.post(...).then(function(response) {
            $http.defaults.headers.common['X-AUTH'] = response.data.randomkeybyserver;
        });
    }
    

    【讨论】:

    • 嗨@Puigcerber,我对实例化服务和提供程序有疑问。对于您的方法,一旦用户登录但点击刷新按钮,服务将崩溃并且令牌将消失。无论如何我可以这样做,所以令牌会持续存在吗?
    • 您可以使用$cookieStore 来保存它,但请记住您的令牌应该被加密,这样任何人都无法修改它来访问您的应用程序。
    猜你喜欢
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多