Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS身份验证全局变量_Angularjs - Fatal编程技术网

AngularJS身份验证全局变量

AngularJS身份验证全局变量,angularjs,Angularjs,我正在尝试实现一个自定义API身份验证方法,如下所示 但是,我在使用authkey时遇到了一些问题。我想将收到的authkey保存为全局变量,但我似乎无法更改它,它始终与开始时定义的值相同 我正在使用angular(v0.9)服务实现全局变量 我的代码片段 angular.service('Authkey', function(){ return { "authkey": "0000" }; }); 控制器 function LoginCtrl(Login_, Authkey_){ t

我正在尝试实现一个自定义API身份验证方法,如下所示

但是,我在使用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

谢谢你给我的一切帮助。谢谢..

试试这个:

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服务在密钥上有一个闭包,您可以获取/设置该值


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

我不确定这是否在0.9的角度范围内可用。。。但是你可以试着用。。。。它允许您设置一个全局可注入的值

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

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

app.controller('MyCtrl', function($scope, token) {
     $scope.tokenOut = token; //still 12345.
});

谢谢你的回复。我试过了。同样的问题依然存在。如果在登录页面调用console.log,该值将更改为response.authkey,但当我将窗口位置更改为main.html时,该值将恢复为原始值。奇怪..哦,我没注意到你那样改变了窗户的位置。您应该使用$location服务将应用程序位置更改为路由。当您更改这样的位置时,您将丢失所有javascript状态。此时,您应该将authkey存储在cookie.oh中。难怪。我无法获取$location.path来工作。我想我可以在window.location附近工作。您是否有“使用$location服务将应用程序位置更改为路线”的示例代码对不起。Angularjs的真正初学者。谢谢,嗯。我已经使用带有main.html(标题、菜单栏等)的ng:views为不同页面设置了一个路由列表。Login.html只是一个简单的两个文本框输入页面。我如何设置使用位置?我也是一个相当大的新手:)。您应该阅读以下内容:我还可以告诉您,您应该将某些元素设置为ng视图,并使用partials更改其内容。如果您的case-ng视图可能应该放在body元素上,那么您可以使用main.html和login.htmlYes更改整个body内容,您可以更改它。