2014-04-18 2 views
3

나는 login 경로입니다. 나는이 행동을하기 전에이 고리를 만들었다 :유성 및 철분 라우터, 로그인시 대기

onBeforeAction: function() { 

    console.log(Meteor.user()) 
    console.log(this.route.name) 

    // If the user is not logged and if we are not on the login page 
    // Redirect the user to the login page 
    if(!Meteor.user() && this.route.name !== 'login') { 
     Router.go('login'); 
    }; 

    // If the user is logged, take him out of the login page 
    if(Meteor.user() && this.route.name === 'login') { 
     Router.go('newsletters.index'); 
    }; 
} 

그러나 로그인은 어때?

Meteor.loggingIn()이 맞으면 라우터를 대기시키고 싶습니다. waitOn은 구독 정보이며 작동하지 않습니다. 및
계정-항목 ($ :

나는 내가 사용하는

+0

무엇이 필요합니까? 로깅 시간은 대개 꽤 짧으며 많은 경로를로드하는 것을 포함하지 않습니다 :-) –

+0

리디렉션이있어서 사용자가 예를 들어 '게시 경로'에있는 웹 사이트에 도착하여 로그인하는 중입니다. '로그인 경로'. 왜냐하면'Meteor.user()'가 false를 반환한다면 나는 방향을 바꾸기 때문이다. 리디렉션에 로그인 상태를 추가 할 수는 있지만 로그인에 실패하면 어떻게해야합니까? – fabien

답변

3

: 전에 ...
철 라우터 (철 라우터 $ 유성이 cmather 추가) 않은 몇 가지 다른 확신 해요 meteor add joshowens : accounts-entry). 당신은 망할 놈의 허브에서 확인할 수 있습니다


https://github.com/Differential/accounts-entry
https://github.com/EventedMind/iron-router

구성의 경우, 클라이언트 폴더 하나의 아카이브에 작성해야합니다, 예를 들어, 당신은에 추가해야합니다 그 후

Meteor.startup(function() { 
    AccountsEntry.config({ 
     logo: 'logo.png',     // if set displays logo above sign-in options 
     homeRoute: '/',     // mandatory - path to redirect to after sign-out 
     dashboardRoute: '/dashboard',  // mandatory - path to redirect to after successful sign-in 
     profileRoute: 'profile', 
     passwordSignupFields: 'USERNAME_AND_EMAIL', 
     language: 'en', 
     showOtherLoginServices: true,  // Set to false to hide oauth login buttons on the signin/signup pages. Useful if you are using something like accounts-meld or want to oauth for api access 
     extraSignUpFields: [{    // Add extra signup fields on the signup page 
     field: "name",       // The database property you want to store the data in 
     name: "This Will Be The Initial Value", // An initial value for the field, if you want one 
     label: "Full Name",      // The html lable for the field 
     placeholder: "John Doe",     // A placeholder for the field 
     type: "text",       // The type of field you want 
     required: true       // Adds html 5 required property if true 
     }] 
    }); 
    }); 

을 config.js lib/router.js 폴더 아래에이 코드를 추가하십시오.

var mustBeSignedIn = function(pause) { 
    AccountsEntry.signInRequired(this); 
}; 

Router.onBeforeAction(mustBeSignedIn, { 
    except: ['entrySignIn', 'entrySignUp', 'entryForgotPassword', 'layout', 'home'] 
}); 

이것은 제가 지금 사용하고있는 해결책입니다.

+0

다음을 제외한 alsa : entryResetPassword – Guidouil