2

我的应用程序的后端使用需要用户通过基本身份验证登录的 rest api。这意味着他们拨打的每个电话都要求他们发送用户名和密码。但我希望我的应用程序对用户隐藏这个细节。是的,他们将有一个登录页面,在其中输入用户名和密码,但从那时起,他们应该不知道他们正在为每个后端调用发送用户名/密码。

我的问题是,用户在登录页面上提交后,如何将用户名/密码保存在客户端上,以便以后在每次休息时都可以使用?

几乎是我的问题,但不同的是

  1. 我没有像他那样使用常数
  2. 我的值无法在模块配置时初始化
  3. 我不确定这个答案是否惯用

旁注:我相信有些人会留下评论说,“你不应该那样做!” 很公平,但这并不能回答我的问题。还有其他用例,您需要在客户端存储一个只能在操作后初始化的值。这是我想学习的。

4

1 回答 1

7

我建议将值存储在服务中,并将该服务注入您需要该值的任何地方。在配置时,您可以将值设置为未定义,然后您可以在值可用时填写它。这也允许您使用 $watch 来确定值的设置时间。

我还要看看AngularJS 的 HTTP Auth Interceptor Module。

这是一个粗略的例子来说明这个概念。

<div ng-app="exampleApp">
    <div ng-controller="controller1">   
        {{ sharedData.someData }}
    </div>
    <div ng-controller="controller2">   
        <button ng-click="sharedData.someData='otherData'">Set Data</button>
    </div>
</div>


angular.module('exampleApp', []).controller('controller1', function(sharedData, $scope){
    $scope.sharedData = sharedData;      
}).controller('controller2', function(sharedData, $scope){
    $scope.sharedData = sharedData;       
}).service('sharedData', function(){
   this.someData = "test";
   return this;
});
于 2013-08-12T19:59:28.857 回答