AngularJS身份验证全局变量

时间:2012-10-22 18:23:06

标签: angularjs

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

Password protecting a REST service?

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

我使用angular(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。

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

2 个答案:

答案 0 :(得分: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服务在密钥上有一个闭包,你可以获得/设置该值。

你的代码中的

总是会返回相同的东西。您在服务中设置密钥对您的返回值没有影响

答案 1 :(得分: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.
});