gpt4 book ai didi

AngularJS (Restangular) : Making a promise block? 需要使用它来验证 token

转载 作者:行者123 更新时间:2023-12-04 14:29:20 26 4
gpt4 key购买 nike

我偶然发现了 Restangular 调用休息服务。它工作得很好并返回一个 promise 。我需要能够拥有调用块。原因是在重新加载新页面时,我在技术上没有登录,但我可能将 token 存储在 cookie 中。我想针对休息服务验证此 token 。问题是我需要它来阻止。

如果发生超时或者如果它无效,我可以将用户视为未通过身份验证。

这是想要阻止的原因是我想使用 $location.path 将它们重定向到一个新的 URL,它不是一个有效的 token 。

这不会发生在特定路线上,因此我无法使用阻塞的解析。从技术上讲,它发生在每条路线上 - 我使用 $on.$routeChangeStart 并检查内部变量是否已登录,如果未登录,我会检查存储的 token 。

这会在每次页面刷新时发生,但不会在应用程序内部导航时发生。

我试图获得的影响是 Gmail 的工作方式。

期待任何人对此有任何见解

谢谢

最佳答案

基本上,您需要确保在发生任何路由更改之前发生一些异步操作,在这种情况下,该操作是对用户进行身份验证。

您可以做的是使用 $routeChangeStart为向 resolve 添加属性而发出的事件路线上的对象,如下所示:

function authenticate() {
if ( user.isAuthenticated ) {
return;
}
// Just fake it, but in a real app this might be an ajax call or something
return $timeout(function() {
user.isAuthenticated = true;
}, 3000);
}

$rootScope.$on( "$routeChangeStart", function( e, next ) {
console.log( "$routeChangeStart" );
next.resolve = angular.extend( next.resolve || {}, {
__authenticating__: authenticate
});
});

由于 angular 将等待 resolve 中的任何 promise 在继续之前要完成的对象,您可以像示例中那样使用伪依赖项。使用类似的东西,您应该能够保证您的用户在任何路由成功执行之前进行身份验证。

示例: http://jsfiddle.net/hLddM/

关于AngularJS (Restangular) : Making a promise block? 需要使用它来验证 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18105046/

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