認証が必要な単純な API にパスポートローカル戦略を使用しています。すべてのルートの前に、アプリケーションへのアクセスを処理するミドルウェアを使用します
var verifyAuth = function(req, res, next) {
if (req.originalUrl === '/signup' || req.originalUrl === '/login') {
return next();
}
if (req.isAuthenticated()) {
return next();
}
if (req.accepts('text/html')) {
return res.redirect('/login');
}
if (req.accepts('application/json')) {
res.set('WWW-Authenticate', '???');
return res.status(401).send({err: 'User should be logged'});
}
};
app.use(verifyAuth);
- ユーザーがサブスクライブまたはログインする場合、それらのルートへのアクセスを許可します
- ユーザーがログインしている場合、アクセスを許可します
- ユーザーがログインしておらず、ブラウザーを使用している場合 (たとえば)、/login にリダイレクトします。
- ユーザーがログに記録されておらず、Accept Header = 'application/json' の他のデバイスにいる場合、アプリケーションは 401 を返します。
401 を使用して、応答と共に WWW-Authenticate ヘッダーを送信すると面白いかもしれないと読みました。彼らは Basic Auth または OAuth を値として使用することを提案しています。Local-Strategy にはどの値を使用すればよいですか? ログイン用の URL とともに Location を送信することも興味深いと思いますか?