我正在尝试按照以下建议实现自定义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。
感谢我能得到的所有帮助。谢谢..
答案 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.
});