2

認証が必要な単純な 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);
  1. ユーザーがサブスクライブまたはログインする場合、それらのルートへのアクセスを許可します
  2. ユーザーがログインしている場合、アクセスを許可します
  3. ユーザーがログインしておらず、ブラウザーを使用している場合 (たとえば)、/login にリダイレクトします。
  4. ユーザーがログに記録されておらず、Accept Header = 'application/json' の他のデバイスにいる場合、アプリケーションは 401 を返します。

401 を使用して、応答と共に WWW-Authenticate ヘッダーを送信すると面白いかもしれないと読みました。彼らは Basic Auth または OAuth を値として使用することを提案しています。Local-Strategy にはどの値を使用すればよいですか? ログイン用の URL とともに Location を送信することも興味深いと思いますか?

4

0 に答える 0