我的所有路线工作正常,我的路线在“ D:\ test \ imports \ startup \ client \ routes.js ”中声明。
我在所有路线的末尾添加了以下代码。
Accounts.onLogin(function(){
console.log(Meteor.user().profile.customerType == 'CLIENT'); // shows true
if(Meteor.user().profile.customerType == 'CLIENT'){
FlowRouter.go('client');
} else {
console.log('else');
}
});
Accounts.onLogout(function(){
FlowRouter.go('/');
});
当注销模块运行完美时,onLogin()调用会重定向到页面,但使用“ FlowRouter.notFound ”操作。
以下是我成功登录时返回的页面。
如何设法重定向到正确路径而不是'notFound '路径?
------------- -------------修订
PROJECT \进口\启动\客户\ routes.js
var clientRoutes = FlowRouter.group({
prefix: '/client',
name: 'client',
triggersEnter: [function(context, redirect) {
if(!Meteor.userId()){FlowRouter.go('/');}
console.log('/Client route called.');
}]
});
clientRoutes.route('/', {
name: 'client-dashboard',
action: function() {
console.log("Dashboard called.");
BlazeLayout.render('App_AuthClient', { main : 'App_UserDashboard'});
}
});
答案 0 :(得分:2)
问题更新后,似乎client
是FlowRouter组的名称而不是路由名称,即client-dashboard
,应该用于重定向用户。
由于您使用的是FlowRouter,我建议采用以下方法:
创建两个路线组:
const protectedRoutesGroup = FlowRouter.group({
triggersEnter: [function () {
if (!Meteor.userId) {
FlowRouter.go('login')
}
}]
});
const guestOnlyRoutesGroup = FlowRouter.group({
triggersEnter: [function () {
if (Meteor.userId) {
FlowRouter.go('homepage')
}
}]
});
然后分别定义路线:
protectedRoutesGroup.route('/', {
name: 'homepage',
action () {
BlazeLayout.render(baseLayout, { main: 'template_name' });
}
});
guestOnlyRoutesGroup.route('/', {
name: 'login',
action () {
BlazeLayout.render(baseLayout, { main: 'login_template' });
}
});
因此,FlowRouter将根据Meteor.userId cookie值处理重定向。
你被重定向到404的原因,我猜是没有定义名称为“client”的路由。