【发布时间】:2018-03-04 13:07:45
【问题描述】:
我正在尝试使用这样的受保护路由:1). loggedin user group routes 2.) admin routes, 3.) student routes, 4.) public routes。 LoggedInUser 按预期工作,但其他 2 条路线 - schooladmin 和 students 无法按需要工作。
在以管理员或学生身份登录后,根据预期,各个用户应该能够访问允许的 url,但例如,如果 schooladmin 管理员访问http://localhost/students,它会自动重定向回来到仪表板,同样适用于学生。我该怎么做才对?
此路由组只允许登录用户。
var LoggedInUser = FlowRouter.group({
name: 'currentUser', triggersEnter: [function (context, redirect) {
if (Meteor.loggingIn() || Meteor.userId()) {
FlowRouter.watchPathChange();
let currentRoute = FlowRouter.current();
if (!currentRoute.path) {
FlowRouter.go('/dashboard');
} else {
FlowRouter.go(currentRoute.path);
}
} else {
redirect('/');
}
}]
});
这是学校管理员的路由组
var schooladmin = LoggedInUser.group({
name: 'schooladmins', triggersEnter: [function (context, redirect) {
FlowRouter.watchPathChange();
let currentRoute = FlowRouter.current();
if (Roles.userIsInRole(Meteor.userId(), ['super-admin', 'admin'])) {
console.log(currentRoute.path);
FlowRouter.go(currentRoute.path);
} else {
redirect('dashboard');
}
}]
});
这是学生的路线
var students = LoggedInUser.group({
name: 'students', triggersEnter:[function (context, redirect) {
FlowRouter.watchPathChange();
let currentRoute = FlowRouter.current();
if (Roles.userIsInRole(Meteor.userId(), ['manage-team', 'student-page'])) {
FlowRouter.go(currentRoute.path);
} else {
redirect('dashboard');
}
}]
});
组附加到的示例路由 此示例路线仅供学校管理员访问
schooladmin.route('/students', {
name: 'students', action(){
BlazeLayout.render('formrender', {formrend: 'student'});
}
});
此路线供学生使用
students.route('/student/dashboard', {
name: 'students-dashboard', action(){
BlazeLayout.render('studentlayout', {studentrender: 'studentdashboard'});
}
});
【问题讨论】:
标签: meteor url-routing url-redirection meteor-blaze flow-router