私はコントローラに私のルートを転送しようとしたが、それはPassport.jsPassport認証がコントローラにスタックされていますか?
今router.get('/login', (req, res, next) => UserController.getLogin(req, res, next));
router.post('/login', (req, res, next) => UserController.postLogin(req, res, next));
と私のために動作するようには思えない、動作しないルートだけが特別パスポートを持つものです。
static getLogin(req: Request, res: Response, next: NextFunction) {
...
}
static postLogin(req: Request, res: Response, next: NextFunction) {
passport.authenticate('local', {
successRedirect: '/success',
failureRedirect: '/failed'
});
// res.send('hello from POST'); would work
}
私は
私は[link] https://github.com/Microsoft/TypeScript-Node-Starter/blob/master/src/controllers/user.ts [/ link]をちょっと試してみましたが、コントローラのapp .post( "/ login"、userController.postLogin); 'このように、構造がより整理されるようになります。それは正しいアプローチではありませんか? – Dawid
そのパターンに従うことができます。もしそうなら、あなたは 'authenticate'の最終実行を追加し、' req、res、next'を渡したいでしょう。 '... failureRedirect: '/ failed'})'(req、res、next) ' – ktilcu
ありがとう! 私は実際に関数を自己呼び出しするのを忘れました 'passport.authenticate( 'local'、{...})(req、res、next);'うまく動作します – Dawid