2017-03-26 1 views
0

passport.js을 사용하면 사용자가 isAuthenticated인지 확인하는 방법은 무엇입니까? 나는이 같은 일을하는 사람들의 예를 참조express.Router()에서 Passport isAuthenticated를 확인하는 방법

:

app.get('/', isAuthenticated, function(req,res){}); 

어떻게 심지어 작동 하는가는, app.get는 두 개의 인수를 받아들이는?

express.Router()을 사용하면 어떨까요?

router.get의 올바른 구문은 무엇입니까?

일반적으로 모든 경로에서 isAuthenticated을 확인하는 것이 비효율적 인 것으로 보입니다. Express 앱에서 인증을 확인하는 더 좋은 방법이 있습니까?

감사합니다.

답변

1

app.get은 필요한만큼 많은 middlewares을 허용합니다. documentation에 따르면

router.METHOD (경로, [콜백, ...] 콜백)

...

가 여러 콜백을 제공 할 수 있으며, 모두가 동등하게 취급된다 , 이러한 콜백이 나머지 라우트 콜백을 우회하기 위해 next ('route')를 호출 할 수 있다는 점을 제외하고는 미들웨어와 같이 동작합니다. 은이 메커니즘을 사용하여 경로에서 사전 조건을 수행 한 다음 경로가 일치하는 이유가 없을 때 컨트롤을 후속 경로로 전달할 수 있습니다. 익스프레스 미들웨어로 사용할 수 있습니다 반면 passport.js provides a built-in function

function isAuthenticated(req, res, next) { 
    if(/*check authentification*/) { 
    return next(); 
    } 

    res.send('auth failed'); 
} 

:

이 당신의 인증 middlware 기능처럼 보일 수 있습니다 방법이다. 요청을 인증

app.post('/login', 
    passport.authenticate('local'), 
    function(req, res) { 
    // If this function gets called, authentication was successful. 
    // `req.user` contains the authenticated user. 
    res.redirect('/users/' + req.user.username); 
    }); 

는 전략을 사용하는 passport.authenticate() 및 지정을 전화로 간단합니다. 전략은 경로에서 사용하기 전에 구성해야합니다. 자세한 내용은 configuration 장을 계속 읽으십시오.

+0

감사합니다. 나는 그것이 (경로, 핸들러)와 같다고 맹세했기 때문에 나는 무언가 잘못된 버전의 문서를 발견했을 것이다. – vinhboy

관련 문제