2014-04-06 6 views
8

पर लॉग इन किया है, ऐसा लगता है कि Deps.autorun जाने का रास्ता है लेकिन Router.go Deps.autorun के भीतर काम नहीं कर रहा है। एक उपयोगकर्ता index पृष्ठ पर है और वह में लॉग इन किया है, तोउपयोगकर्ता ने अभी लॉग इन किया है या सिर्फ

Router.configure({layoutTemplate: 'layout'}); 

Router.map(function() { 
    this.route('index', {path: '/'}); 
    this.route('signin'); 
    this.route('dashboard'); 
}); 

var mustBeSignedIn = function(pause) { 
    if (!(Meteor.user() || Meteor.loggingIn())) { 
    Router.go('signin'); 
    } else { 
    this.next(); 
    } 
}; 

var goToDashboard = function(pause) { 
    if (Meteor.user()) { 
    Router.go('dashboard'); 
    } else { 
    this.next(); 
    } 
}; 

Router.onBeforeAction(mustBeSignedIn, {except: ['signin']}); 
Router.onBeforeAction(goToDashboard, {only: ['index']}); 

, वह स्वचालित रूप से dashboard पेज पर ले जाया जाएगा: index, signin और dashboard:

उत्तर

17

यहाँ तीन मार्गों के साथ एक उदाहरण है। signin को छोड़कर किसी भी पेज पर, यदि उपयोगकर्ता लॉग इन नहीं है तो उसे signin पृष्ठ पर भेजा जाएगा। onBeforeAction प्रतिक्रियाशील है इसलिए यदि उपयोगकर्ता लॉग इन या आउट करते हैं तो इन नियमों को तत्काल लागू किया जाएगा।

बेशक आपके मार्ग अलग होंगे, लेकिन उम्मीद है कि यह उदाहरण लोहे-राउटर के साथ इस काम को बनाने के लिए एक तरीका दिखाता है।

iron-router guide के using hooks अनुभाग को भी देखें।

+0

'goToPick' क्या है? – Warz

+0

यह एक टाइपो था। यह बात बताने के लिए धन्यवाद। –

+1

इस दृष्टिकोण का उपयोग करके, आपको एक खाली टेम्पलेट अनुक्रमणिका बनाने की आवश्यकता है। सही? अन्यथा, उल्का एक अपवाद फेंकता है। –

4
var mustBeSignedIn = function(pause) { 
    if (!(Meteor.user() || Meteor.loggingIn())) { 
    Router.go('signin'); 
    } else { 
    this.next(); 
    } 
}; 

var goToDashboard = function(pause) { 
    if (Meteor.user()) { 
    Router.go('dashboard'); 
    } else { 
    this.next(); 
    } 
}; 

FYI करें, ठहराव() नहीं अब समर्थित है, बस this.next()

7

ऊपर कुछ बातें पुरानी हो चुकी होने लगते हैं के साथ बदलें। यहां बताया गया है कि मुझे वर्तमान समय में काम करने वाली चीजें कैसे मिलीं:

Router.configure({ 
    layoutTemplate: 'Layout' 
}); 

Router.map(function() { 
    this.route('index', {path: '/'}); 
    this.route('login'); 
    this.route('home'); 
}); 

var mustBeSignedIn = function() { 
    if (!(Meteor.user() || Meteor.loggingIn())) { 
     Router.go('login'); 
    } else { 
     this.next(); 
    } 
}; 
var goHome = function() { 
    if (Meteor.user()) { 
     Router.go('home'); 
    } else { 
     this.next(); 
    } 
}; 

Router.onBeforeAction(mustBeSignedIn, {except: ['login']}); 
Router.onBeforeAction(goHome, {only: ['index', 'login']}); 
संबंधित मुद्दे