3
これは私の最初の急行アプリです。いくつかのルートの認証を実装しようとしています。理想的には、ユーザーが認証されていない場合、ユーザーはホームページにリダイレクトされます。だから私はこのミドルウェアを書いた:express-jwtを使用して認証されていないユーザーにリダイレクトする方法
var jwt = require('express-jwt');
app.get('/protected',
jwt({secret: 'shhhhhhared-secret'}), //express-jwt middleware
function(req, res, next) { //redirection middleware
if(!req.user._id){
console.log('authentication failed')
res.redirect('/home')
}else{
next()
};
});
ユーザーがログインしている場合、コードは動作します。ただし、ユーザーがログインしていない場合、ブラウザーには401許可されていないエラーが表示されます。リダイレクトはありません。このプロセスはexpress-jwtミドルウェアで失敗し、リダイレクトミドルウェアに移行しませんでした。
jwt関数内で設定する必要のある設定はありますか?または、401に遭遇した場合にグローバルリダイレクションを設定する方法はありますか?
このコードは、認証ミドルウェアの前または後に置くことになっていますか? – Sydney
このミドルウェアは最後のものでなければなりません。他の場合は他のエラーを処理することを忘れないでください。あなたは、SMSまたはエラーの説明付きの電子メールを送信することも、データベースに保存することもできます。 –