2016-07-10 4 views
1

자습서에서이 코드를 사용하고 있습니다. 나는 여권을 가진 사용자를 구현했으며 app.useUnauthorizedError을 확인했으며 응용 프로그램의 제한된 부분에 대한 무단 액세스를 확인하는 방법을 자습서에서 권장했습니다.익스프레스 라우팅 - 권한이없는 오류 처리기가 오류 경로를 끊습니다.

잘못된 URL을 입력 할 때마다 웹 사이트가 중단되고 오류 처리가없고 브라우저에 메시지가 전송되지 않습니다. 나는 어제의 좋은 부분을 내 경로를 확인하는 데 보냈으며 눈부신 문제가없는 것 같았다.

그런데 오늘 나는 약간의 예민함을 가지고 Unauthorized error에 대한 오류 검사를 주석 처리했으며 오류 처리는 모두 좋은 결과를 보였습니다. 여기에서 무슨 일이 일어나고 있는지에 대한 제안과 어떻게이 오류 검사를 올바르게 구현할 수 있습니까?

참고 : 알려진 URL 양호 경로에 대한 실제 무단 액세스가있는 경우이 오류 검사가 작동합니다. 로그인 한 경우에도 그러나 여전히 나쁜 URL을 잡을 수 없습니다. 아마도

app.use('/', routes); 
app.use('/api', routesApi); 

// catch 404 and forward to error handler 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 

// error handlers 
// Catch unauthorised errors 
app.use(function (err, req, res, next) { 
    if (err.name === 'UnauthorizedError') { 
    res.status(401); 
    res.json({"message" : err.name + ": " + err.message}); 
    } 
}); 

// development error handler 
// will print stacktrace 
if (app.get('env') === 'development') { 
    app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
     message: err.message, 
     error: err 
    }); 
    }); 
} 

// production error handler 
// no stacktraces leaked to user 
app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
    message: err.message, 
    error: {} 
    }); 
}); 


module.exports = app; 

답변

2

를, 당신은 다음 오류 처리기에 오류를 전달로) (다음 호출해야합니다.

app.use(function (err, req, res, next) { 
    if (err.name === 'UnauthorizedError') { 
    res.status(401); 
    res.json({"message" : err.name + ": " + err.message}); 
    } else 
    next(err); 
}); 
+1

아마도 ... 그게 다야! – dedalux