2017-11-01 1 views
1

나는 next('route')이라는 표현을 사용하려고하는데이 방법에 관한 문서를 많이 찾지는 못했지만 here을 언급했다. 그러나 수행 방법을 설명하지 않습니다.app.method()를 사용하여 인증을 수행하는 방법

은 app.METHOD() 또는 router.METHOD() 함수를 사용하여로드 된 미들웨어 기능에서만 작동합니다.

나는 내가 전에 app.METHOD()을 사용하지 다시 next('route') 제대로을 수행하는 방법에 대한 문서를 찾을 수없는 나는 결코 때문에 그 무엇을 의미하지 않습니다. 이게 효과가 있니?

app.method('*', (req, res, next) => { 
if(req.user == null) { 
    next(); 
} else { 
    User.findOne({"_id": req.user.id}, function(err, result) { 
    if(err){ 
    console.log(err); 
    } else { 
    if(stripe.active == false && stripe.trial == false){ 
     res.render('/dashboard/billing'); 
     next('route'); 
    } else { 
     next(); 
    } 
    } 
    }); 
} 
}); 

작동 여부 나는 어딘가에서 뭔가를 엉망으로 추측하고있다. 내가 바로 그 다음에 사용자를 찾으면 is_activeis_trial이 모두 거짓이며, 그렇다면 다음 경로로 건너 뜁니다. 내게 이렇게하는 생각은 로그인 한 사용자가없는 사이트의 어떤 부분이라도 사용할 수 있고 로그인 한 사용자가있을 때 둘 다 false 일 때 나는 단지 그들에게 /dashboard/billing을 보내 게합니다. 이것은 나에게도 아직 재판을 지불하지 않은 사용자가 내 애플리케이션에 액세스하지 못하도록하는 방법으로 제안되었습니다. 나는에 대한 테스트입니다

노선 : 모든

// dashboard 
app.get('/dashboard', 
setRender('dashboard/index'), 
setRedirect({auth: '/login'}), 
isAuthenticated, 
(req, res, next) => {  

}, 
dashboard.getDefault); 

답변

2

첫째, 올바른 HTTP 메소드 요청에 대한 방법을 변경합니다. 문서에서는 .METHOD()가 무엇을 나타내는 지 지정 METHOD 요청 의 HTTP 메소드이다

app.METHOD() 함수를, 그러한 GET, PUT 또는 POST와 같은 미들웨어 기능 핸들 () in 소문자.

app.get('*', (req, res, next) => { 
if(req.user == null) { 
    next(); 
} else { 
    User.findOne({"_id": req.user.id}, function(err, result) { 
    if(err){ 
    console.log(err); 
    } else { 
    if(stripe.active == false && stripe.trial == false){ 
     res.render('/dashboard/billing'); 
     next('route'); 
    } else { 
     next(); 
    } 
    } 
    }); 
} 
}); 

경우 참조 : 즉

는 .METHOD는() 등

앱에 있음을 변경해보십시오, .post, 갔지위한 장소 홀더이다, .put 거기서부터 해결할 수 있습니다.

업데이트

다음 내용 호출 바로 res.render 후 ('경로')() 취소 res.render() 다음 내용은 ('경로') 다음 라우터에 요청을 보낼 때문이다.

+0

너무 리터럴로 찍었습니다 ... 저주. 나머지는 괜찮은가요? 나는 그것을 작동 시키려고 노력하고 있지만 문제는 내 페이지가 모두로드되는 동안 사용자 프로파일의 변수를 false로 변경할 수 없다는 것입니다. 적어도 수동으로하는 방법을 모르겠습니다. – joshk132

+0

나는 테스트를 위해'&&'를'||'로 바꿀 수 있다고 알았지 만, 여전히 원하지 않는 페이지로 나를 보내 줄 것 같습니다. – joshk132

+0

stripe.active == false || 인 경우 다음 라우터로 사용자를 보내려고합니다. stripe.trial == false? –

관련 문제