パスポートとOAuthを使用して自分のサイトのユーザーを認証しています。ユーザーがOAuthでログインしていて、許可されているユーザーの一覧に含まれているかどうかを確認するためにミドルウェアを作成しました。ミドルウェアは機能し、許可されていない場合に使用されるデータルートにユーザーがアクセスするのを防ぎます。問題は、レスポンスがリスト内のユーザーを見つけられなかった後にSequelize catch
ハンドラで呼び出されることはないということです。失敗した場合はリダイレクトされず、データのないページが表示されます。Sequelize catchハンドラで高速応答が実行されない
ここは私のミドルウェアです。私はcatch
に到達していることを知っています。console.logが表示されていますが、res.status('401').redirect(
/admin/login );
は発生しません。見て分かりやすいコードの他の部分があるかどうかを教えてください。すべてのあなたの助けを前にありがとう!
'use strict';
const clc = require(`cli-color`);
const models = require('../models');
const User = models.User;
function isLoggedIn(req, res, next) {
console.log(clc.red.bgBlue(` ::: `), req.user);
res.header('Access-Control-Allow-Credentials', true);
models.sql.sync()
.then(() => {
User.findOne({
where: {
email: req.user.unique_name
}
});
})
.then((user) => {
if (req.isAuthenticated() && user !== null && user.email === req.user.unique_name) { // if user is authenticated in the session and the user email matches the user found in the db, carry on
return next();
} else {
// if they aren't send not authorized
res.status('401').redirect(`/admin/login`);
}
})
.catch((err) => {
console.log(clc.red.bgWhite(`ERR :::: )`), err);
res.status(`401`).redirect(`/admin/login`);
});
}
module.exports = isLoggedIn;
おかげで偽の魚、私はこれで壁に頭を強打されていますすべての朝! – CascadiaJS