2

我正在尝试按照下面的建议实现自定义 API 身份验证方法。

密码保护 REST 服务?

但是,我在使用 authkey 时遇到了一些问题。我想将收到的 authkey 保存为全局变量,但我似乎无法更改它,它总是与开始时定义的值相同。

我正在使用角度(v0.9)服务实现全局变量。

我的代码片段

angular.service('Authkey', function(){
  return {
"authkey": "0000"
 };
});

控制器

function LoginCtrl(Login_, Authkey_){
this.login = function(){
Login_.query({"Username": this.email,"Password": this.password}, function(response){
        if (response.success === "true") {
            Authkey_.authkey = response.AuthKey;
            console.log(Authkey_.authkey);
            window.location="/main.html";

        } 
    }); 
}
}

是的。页面更改后它总是变为 0000。

感谢我能得到的所有帮助。谢谢..

4

2 回答 2

0

试试这个:

angular.service('Authkey', function(){
  var authkey = "000";
  return {
     getAuthKey: function(){
        return authkey;
     }, 
     setAuthKey: function(key){
        authkey = key;
     }
 };
});

//in controller:

Authkey_.setAuthKey(response.AuthKey);
consol.log(Authkey_.getAuthKey());

这里的区别在于 AuthKey 服务对密钥有一个闭包,而您获取/设置该值。

在您的代码中,您总是返回相同的内容。您在服务中设置的键对您的返回值没有影响

于 2012-10-22T18:50:51.160 回答
0

我不确定这是否在 Angular 0.9 中可用...但您可以尝试使用Module.value(key, value) .... 它允许您设置全局可注入值。

var app = angular.module('myApp', []);

app.value('token', '12345');

app.controller('MyCtrl', function($scope, token) {
     $scope.tokenOut = token; //still 12345.
});
于 2012-10-22T21:33:26.810 回答