我有一个非常简单的登录,但由于我们的后端结构,我必须使用angularjs的$http GET请求进行登录。
但是,我不希望在URL中看到用户名和密码。
所以我很好奇我能做些什么来解决这个问题?任何帮助都将不胜感激。
这是我的LoginController.js
self.login = function() {
if (self.username == '' || self.password == '') {
alert("Please Check your credentials");
} else {
LoginService.login(self.username, self.password).then(function (resp) {
//console.log(resp);
LoginService.setCredentials(self.username,self.password);
$state.go('dashboard');
})
}
}
这是LoginService.js
var loginSuccess = function (response) {
//console.log(response.data);
//console.log(response.data.keyId);
$rootScope.keyId = response.data.keyId;
$cookies.put('keyId',$rootScope.keyId);
self.isLoggedIn = true;
//$state.go('dashboard');
return response.data;
};
return {
login: function (username, password) {
return $http({
method: 'GET',
url: 'https://URLHERE/ApplicationKeys/'+username+'Key/?userid='+username+'&password='+password,
headers: {'ACCEPT':'application/json'}
}).then(loginSuccess,loginFailure);
},
isLoggedIn: function () {
return self.isLoggedIn;
},
如果您控制与之通信的服务器,则应将其修改为POST。获取用于获取信息,而不是更新信息
此外,您还可以传递数据对象,而不是将其作为url的一部分。
return $http({
method: 'GET',
url: 'https://URLHERE/ApplicationKeys/'+username+'Key/',
headers: {'ACCEPT':'application/json'},
data: {userid: username, password: password}
}).then(loginSuccess,loginFailure);
我找到了自己的答案。显然,当您在html中使用<form></form>
标记时,它会将所有信息粘贴到浏览器中的URL。当我删除html页面中的<form>
标记时,一切都消失了。