gpt4 book ai didi

javascript - $resource 删除功能没有按预期工作?

转载 作者:行者123 更新时间:2023-11-29 14:49:36 27 4
gpt4 key购买 nike

我使用自己使用 Laravel 创建的简单 API 在 Angular 中构建了一个简单的应用程序。该应用程序托管 here . API托管here .现在我可以登录到应用程序,此时 API 返回一个简单的 auth_token,它在发送到服务器的每个后续请求中作为 URL 参数发送。

系统中只有一个用户:

Email: admin@admin.com
Password: admin12345

您可以使用这些凭据登录应用程序,此时应用程序将使用 $cookieStore 服务设置一个 cookie,并将在每个后续请求中使用此 cookie 中的 token 。使用该应用程序后,用户可以从该应用程序注销,此时会向服务器发送 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

最佳答案

这是你的解决方案

$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
}
);
};

注意:->(以下几点解决了问题)

  1. 仅缺少 $resource.delete API 中的第二个选项 (postdata)。如果 API 不需要它,我们应该将其作为空白 {} 提供。
  2. 删除方法应该返回204状态码,以便执行成功回调。

关于javascript - $resource 删除功能没有按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27645012/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com