我有一个Meteor应用程序,我想让用户在登录后和登出后转到仪表板(称为documentsIndex)页面,将它们重定向到Web应用程序的首页。现在我有以下内容:
Iron.Router.hooks.requireLogin = function () {
if (! Meteor.user()) {
if (Meteor.loggingIn()) {
this.render('this.loadingTemplate');
} else {
this.render('accessDenied');
}
} else {
this.next();
}
};
Iron.Router.hooks.goToDashboard = function () {
if (Meteor.user()) {
Router.go('documentsIndex');
this.next();
} else {
this.next();
}
};
Iron.Router.hooks.goToFrontpage= function () {
if (!Meteor.user()) {
Router.go('frontpage');
this.next();
} else {
this.next();
}
};
Router.onBeforeAction('goToDashboard', {except: ['documentNew', 'documentIndex', 'documentShow', 'documentEdit']});
Router.onBeforeAction('goToFrontpage', {except: ['frontpage', 'about']});
Router.onBeforeAction('requireLogin', {except: ['frontpage', 'about']});
Router.onBeforeAction('dataNotFound', {only: ['documentIndex','documentNew', 'documentIndex', 'documentShow', 'documentEdit']});
这样可行,因此当用户登录时,他总是被重定向到DocumentsIndex路由,并且他可以导航后端。当用户退出时,他被重定向到首页并可以浏览前端。
注意:我使用的是account-password package
答案 0 :(得分:4)
你可以使用Meteor的Accounts.onLogin(function () {});
钩子而不是铁:路由器(doc)。在此挂钩中,您可以访问Meteor.user()以检查其角色并根据需要更改操作。
同样,您可以使用Meteor.logout()
中的回调函数来处理注销时的任何逻辑,如下所示:
Meteor.logout(function(err) {
// logout logic here
});
如果您希望使用{{> loginButtons}}在某个模板上,即:adminTemplate
然后使用下面的代码。我没有测试过这段代码片段,因此可能需要进行微调。
Template.adminTemplate.events({
'click #login-buttons-logout': function (event) {
//add your custom logic on top of this
//the default behaviour should still happen from meteor
}
});