0
私のカスタムURLにリダイレクトします。 ただし、req.query.redirect
は未定義です。ここでpassport-github、req.query.redirectが正しくありません
は私のルートである:
app.get('/auth/github', (req: Request, res: Response, next: NextFunction) => {
const redirect: string = encodeURIComponent(req.query.redirect);
let successRedirect: string;
if (redirect) {
successRedirect = `/auth/github/callback?redirect=${redirect}`;
} else {
successRedirect = '/auth/github/callback';
}
passport.authenticate('github', { successRedirect })(req, res, next);
});
app.get('/auth/github/callback', passport.authenticate('github', {
failureRedirect: '/login'
}), (req: Request, res: Response) => {
res.redirect(301, req.query.redirect || '/');
});
successRedirect
は/auth/github/callback?redirect=https%3A%2F%2Fwww.google.com
である。しかし/auth/github/callback
に移動したときに、
req.query
は{code: "bb7d0e867b3aa40f507f"}
あり、
はどこreq.query.redirect
のですか?
req.query.redirect
はhttps%3A%2F%2Fwww.google.com
です。
(未テスト)ええ、私はreq.session' 'にリダイレクト置くが、何かがあるようです'res.redirect'で間違っていると、エラーが出ます:' GET/auth/github/https%3A%2F%2Fwww.google.com' – novaline
リダイレクトはURLエンコードされているようですさあ。目標はそれをクエリ/ URLパラメータとして渡すのではなく、完全な適切なURLとして渡すことです。ありがとう。 – robertklep
ありがとう。 'encodeURI'を削除すると動作します。 – novaline