2014-12-10 1 views
2

활성 Meteor 로그인 토큰을 사용하고 meteor reset과 함께 DB를 삭제하면 다시로드 할 때 응용 프로그램 페이지가 급히 멈 춥니 다. 페이지에로드가 계속 유지되는 것처럼 느껴지지만 페이지에서 아무 것도 할 수 없습니다. 브라우저 콘솔도 중단됩니다. Chrome과 Firefox에서 동일한 동작을 테스트했습니다. 그러나 앱 도메인의 캐시를 제거하려고하면 (브라우저 설정을 통해 dev 도구가 의식을 잃음) 모든 것이 정상적으로되고, 내 경로 설정에서 제공된대로 로그인 페이지로 리디렉션되고 브라우저 콘솔에 다음 메시지가 표시됩니다. : You've been logged out by the server. Please log in again. 이 내 철 라우터 글로벌 onBeforeAction 후크입니다 :이 지역의 테스트를 수행 할 때보다 훨씬 더 자주 프로덕션 서버에서 발생하는 매우 이상한 재빠른 문제가 있음을뿐만 아니라 언급 할 필요가유성 재설정을 수행 할 때 로그인 한 사용자의 응용 프로그램 페이지가 고정됩니다.

Router.onBeforeAction(function() { 

document.documentElement.className = 'gt-ie8 gt-ie9'; 

var currentUser = Meteor.user(), 
    currentRoute = this.route.getName(), 
    routeOptions = {}, 
    userRoles, 
    userCompany, userTeam, 
    allowedRoutes; 

// prevent not logged in user from visiting the app 
// console.log(this.next); 
if (!currentUser) { 
    this.redirect('login'); 
    // return; 
} else { 

    userRoles = currentUser.roles; 

    userRoles = userRoles.length ? userRoles : ['member']; 
    userCompany = currentUser.companyId || null; 
    userTeam = currentUser.teamId || null; 

    // get current user allowed routes (for highest role) 
    allowedRoutes = _.filter(SW.roles, function (appRoute, index) { 
    return userRoles.indexOf(index) > -1; 
    }); 
    allowedRoutes = allowedRoutes && allowedRoutes.length ? allowedRoutes[0].routes : []; 

    // if not all routes are allowed 
    if (allowedRoutes.indexOf('*') === -1) { 
    // restrict if route is not allowed 
    if (!allowedRoutes.length || allowedRoutes.indexOf(currentRoute) === -1) { 
     this.redirect('member.self'); 
    } 
    } 

} 

this.next(); 

}, { 
    except: ['enroll', 'login', 'logout'] 
}); 

.

+0

프로덕션 서버에서'meteor reset'을 사용하고 있습니까? 문제는 Meteor 서버를 종료하고 모든 사용자의 연결을 끊는 것입니다. 코드를 업데이트하고 Meteor가 정상적으로 다시로드되도록하려면 핫 리로드가 시간 초과되지 않는 한 이런 일이 발생하지 않아야합니다. – sbking

+0

@sbking 나는'meteor reset'을 로컬로 사용하고 있으며,이 경우 시간이 흐른다. 프로덕션 환경에서는 배포 후 데이터베이스를 삭제하는 스크립트가 있지만 더 자주 나타나는 경향이 있습니다. 몇 가지 변경 사항을 수행 한 후에 데이터베이스 삭제를 수행해야하며 여기에서 문제가 발생합니다. – evenfrost

답변

0

최신 유성기 업데이트 (1.0.2.1)에서 문제가 해결 된 것 같습니다. 하지만, 프로젝트에서 사용하고있는 Fast Render (2.1.0으로 고정)가있는 this issue이 원인 일 수 있습니다.