我在Angular中构建了一个简单的应用程序,使用了我自己使用Laravel创建的简单API。该应用程序已托管here。 API已托管here。现在我可以登录到应用程序,此时API返回一个简单的auth_token
,它将作为URL参数发送到发送到服务器的每个后续请求中。
系统中只有一个用户:
Email: admin@admin.com
Password: admin12345
您可以使用这些凭据登录应用程序,此时应用程序将使用$cookieStore
服务设置cookie,并将在此cookie中使用此令牌用于每个后续请求。使用该应用程序后,用户可以从应用程序注销,其中DELETE
请求发送到服务器,并且在成功方法上,cookie将从浏览器中删除。
不幸的是,我认为代码存在一些问题。 DELETE
请求按预期工作,它会删除服务器上的auth_token
并返回200 OK
。但是没有调用成功方法。我不确定我做错了什么。这可能只是一个语法问题。
app.js
function AppCtrl ($scope, $cookieStore, $location, Auth) {
$scope.setActive = function (type) {
$scope.destinationsActive = '';
$scope.flightsActive = '';
$scope.reservationsActive = '';
$scope[type + 'Active'] = 'active';
};
$scope.authenticate = function (credentials) {
Auth.save(credentials, function(data){
$cookieStore.put('auth_token', data.auth_token);
$scope.isLoggedIn = true;
$location.path('destinations');
$scope.message = null;
}, function(data){
$scope.message = "Email/Password combination incorrect!";
});
};
$scope.logout = function () {
//var auth_token = $cookieStore.get('auth_token');
Auth.delete({
'auth_token': $cookieStore.get('auth_token')
}, function(data){
$scope.isLoggedIn = false;
$cookieStore.remove('auth_token');
});
};
if($cookieStore.get('auth_token')){
$scope.isLoggedIn = true;
}else{
$scope.isLoggedIn = false;
}
}
按下注销按钮时会调用注销功能。我在这里做错了什么?
注意:由于某种原因,该应用程序无法在Chrome上运行(使用Firefox)。如果你能对此有所了解,那将非常有帮助。
如果您希望查看这两个存储库是公开的:
AngulAir申请:http://gitlab.learningtechasia.com:8901/rohan0793/angulair.git
AngulAirAPI:http://gitlab.learningtechasia.com:8901/rohan0793/angulairapi.git
答案 0 :(得分:2)
这是您的解决方案
$scope.logout = function () {
//var auth_token = $cookieStore.get('auth_token');
Auth.delete(
{'auth_token': $cookieStore.get('auth_token')}, // parameters
{},//postData, which you don't need for this
function(data){
$scope.isLoggedIn = false;
$cookieStore.remove('auth_token');
},
// error callback
function (httpResponse) {
// do what you want for error handling here
}
);
};
注意: - > (以下几点解决了问题)