加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

AngularJS(Restangular):做出承诺阻止?需要使用它来验证令牌

发布时间:2020-12-17 10:16:02 所属栏目:安全 来源:网络整理
导读:我偶然发现了Restangular来拨打休息服务.它运作良好,并返回一个承诺.我需要能够拥有调用块.原因是新页面重新加载我在技术上没有登录,但我可能有一个存储在cookie中的令牌.我想针对休息服务验证此令牌.问题是我需要阻止它. 如果发生超时或者它无效,我可以将用
我偶然发现了Restangular来拨打休息服务.它运作良好,并返回一个承诺.我需要能够拥有调用块.原因是新页面重新加载我在技术上没有登录,但我可能有一个存储在cookie中的令牌.我想针对休息服务验证此令牌.问题是我需要阻止它.

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

这是想要阻止的原因是我想使用$location.path将它们重定向到新的URL而不是有效的令牌.

这不会发生在特定路由上,因此我无法使用阻塞的解析.它在技术上发生在每条路线上 – 我使用$on.$routeChangeStart并检查内部变量是否得到LoggedIn,如果没有登录,我检查存储的令牌.

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

我想要获得的影响是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将在继续之前等待解析对象中的任何promise,因此您可以像示例中一样使用伪依赖.使用类似的东西,您应该能够保证您的用户在成功执行任何路由之前进行身份验证.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读