我使用內置的LoginButtons選項和Meteor,我想在用戶登錄後重定向。使用內置的web片段意味着我不能使用Meteor的回調.loginwithPassword和我看不到Iron-Router內部的任何鉤子來做重定向。使用Meteor和鐵路路由器登錄後重定向
有什麼建議嗎?
我使用內置的LoginButtons選項和Meteor,我想在用戶登錄後重定向。使用內置的web片段意味着我不能使用Meteor的回調.loginwithPassword和我看不到Iron-Router內部的任何鉤子來做重定向。使用Meteor和鐵路路由器登錄後重定向
有什麼建議嗎?
流星往往呈現如此迅速,用戶已經定義之前的頁面被加載。你需要使用Meteor.loggingIn()
來佔你在登錄過程是情況此代碼的工作對我來說:
this.route('myAccount', {
path: '/',
onBeforeAction: function() {
if (! Meteor.user()) {
if (!Meteor.loggingIn()) Router.go('login');
}
}
}
'if(!Meteor.loggingIn())Router.go('login');' –
應該很簡單,你只添加類似配置現有的途徑之一:
Tracker.autorun(function() {
var currentRoute = Router.current();
if (currentRoute === null) {
return;
}
if (currentRoute.route.getName() === 'login' && Meteor.user() !== null)
Router.go('WelcomeNewUser');
}
如果用戶未登錄,您也可以使用與其他模板相同的路線。
就像這樣:
this.route('myAccount', {
before: function() {
if (!Meteor.user()) {
this.render('login');
this.stop();
}
}
}
沒有魔法,只是進去看了docs;)
這個例子可能是有用的
// main route render a template
Router.route('/', function() {
this.render('main');
});
// render login template
Router.route('/login', function() {
this.render('login');
});
// we want to be sure that the user is logging in
// for all routes but login
Router.onBeforeAction(function() {
if (!Meteor.user() && !Meteor.loggingIn()) {
this.redirect('/login');
} else {
// required by Iron to process the route handler
this.next();
}
}, {
except: ['login']
});
// add here other routes
// catchall route
Router.route('/(.*)', function() {
this.redirect('/catchallpage');
});
你嘗試這個https://github.com/EventedMind/iron-router#using-hooks Router.before(mustBeSignedIn,{except:['login','signup','forgotPassword']}); – pahan
我看不到任何使用此示例的代碼段,看看如何使用它 – user2243825