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