gpt4 book ai didi

javascript - FlowRouter.go(redirect) 被触发,但实际上并未重定向

转载 作者:行者123 更新时间:2023-11-28 04:04:12 25 4
gpt4 key购买 nike

FlowRouter.go(redirect); //gets triggered, but site does not actually redirect until refreshed.

我关注了这个guide构建我的路线:

var authorised = FlowRouter.group();

var publicRoutes = FlowRouter.group();

FlowRouter.triggers.enter([isUserSignedIn]);

authorised.route('/',{
name:'root',
action(){
BlazeLayout.render('App_body',{ main: 'App_home'});
}
});

publicRoutes.route('/welcome',{
name : 'welcome',
action(){
BlazeLayout.render('Unauthorised', { main: 'welcome' });
}
});


function isUserSignedIn(){
if (!Meteor.user() || Meteor.loggingIn()){
var route = FlowRouter.current();
if (route.path != "/welcome") {
// Set Session to redirect path after login
Session.set("redirectAfterLogin", route.path);
}
console.log("user is not signed in");
FlowRouter.go('welcome');
}
};

// Redirect After Login
Accounts.onLogin(function(){
console.log("Accounts.onLogin()");
var redirect = Session.get("redirectAfterLogin");
if (redirect){
console.log("redirect path exists")
if(redirect != "/welcome"){
console.log("redirect is not welcome path, redirect to ", redirect);
FlowRouter.go(Session.get("redirectAfterLogin"));
}
}
else{
// if redirect doesn't exist, go "/"
console.log("no redirection, go root");
FlowRouter.go('root');
}
})

// Not Found
FlowRouter.notFound = {
action() {
BlazeLayout.render('Unauthorised', { main: 'App_notFound' });
},
};

上面的代码执行以下操作:

情况1:强制Session.set("redirectAfterLogin", "/blah");

  1. 注销应用程序。
  2. 在控制台中输入Session.set("redirectAfterLogin", "/blah");
  3. 登录
  4. 观察控制台中的以下输出:
    • Accounts.onLogin()
    • 重定向路径存在
    • 重定向不是受欢迎的路径,重定向到/blah

但我仍然处于“未经授权”布局,带有“欢迎”模板。

  • 按刷新,我被重定向到“Not Found” - 这是正确的结果。
  • 情况 2:Session.get("redirectAfterLogin") 未定义

    1. 注销应用程序。
    2. 在控制台中输入Session.set("redirectAfterLogin");
    3. 登录
    4. 观察控制台中的以下输出:
      • Accounts.onLogin()
      • 无重定向,转到 root

    但我仍然处于“未经授权”布局,带有“欢迎”模板。

  • 按刷新,我被重定向到“/” - 这是正确的结果。
  • 究竟是什么阻碍了这里的逻辑?请帮忙!

    最佳答案

    我在事件中注销后尝试重定向时遇到此问题:

    'click .js-logout'() {
    Meteor.logout();

    FlowRouter.go('signin');
    },

    我的快速解决方案是为调用路由器添加超时:

    'click .js-logout'() {
    Meteor.logout();

    // we have to do redirect a bit later because logout is interfering the redirection
    setTimeout(
    () => {
    FlowRouter.go('signin');
    }, 100
    );
    },

    您可能想要增加超时时间。

    关于javascript - FlowRouter.go(redirect) 被触发,但实际上并未重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46845742/

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