繁体   English   中英

使用Angular和Meteor在注销时立即重定向用户

[英]Redirect user immediately on logout using Angular and Meteor

在使用angular的Meteor应用程序中,存在一种状态,要求用户登录。

目前,这是使用$meteor.requireUser()

function run($rootScope, $state) {
    $rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error) {
        if(error === 'AUTH_REQUIRED') {
            $state.go('login')
        }
    })
}

.state('secretzone', {
    url: '/secret/zone',
    templateUrl: 'client/secret/views/zone.ng.html',
    controller: 'SecretZoneCtrl',
    resolve: {
        "currentUser": ["$meteor", function($meteor){
            return $meteor.requireUser();
        }]
    }
})

问题:当用户当前处于secretzone状态并注销时,应将其重定向到login状态,但仍保留在同一页面上,直到刷新页面为止。

如果用户已经在需要身份验证的页面上,那么如何在用户注销时将其强制重定向到login状态?

是否可以仅使用UI路由器来完成此操作,就像使用Blaze时使用Iron路由器轻松实现的方法一样?

我能想到的一种方法是在注销成功处理程序中调用$ state.reload()。

顾名思义,这将重新加载当前状态,因此在这种情况下,secretzone会导致调用解析逻辑,并因此引发错误,以供您的$ stateChangeError处理程序使用。

如果您具有注销功能,为什么不直接在该功能中调用$state.go('login')

您可以$ watch或Meteor.Autorun currentUser变量并在其中添加重定向到登录屏幕的逻辑。

如果使用$ rootScope.currentUser,则使用$ watch;如果使用Meteor.currentUser,则使用Meteor.autorun

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM