2017-08-10 23 views
-1

だから私はhttps://www.npmjs.com/package/basic-authを使用していると仮定してすべての作品が、私は私の人生のためにどのように把握することはできません!NodeJS基本認証 - フロントエンドにはどこに格納されていますか?

私の設定はシンプルですが、あなたが管理者であることを認証すると、それ以外の場合はそうではありません。私がしようとしているのは、ユーザーが管理者でない場合に、フロントエンドに特定のナビゲーションバーを表示することです。

NodeJSミドルウェアコード:アイブ氏は、ローカルストレージ、クッキー、私は考えるが、一度魔法のように自動的にヘッダーに表示される基本認証でログインすることができ、すべてをチェックし

exports.login = function (req, res, next) { 
console.log(req.header); 

function unauthorized(res) { 
    res.set('WWW-Authenticate', 'Basic realm=Authorization Required'); 
    return res.sendStatus(401); 
}; 

    var user = basicAuth(req); 

    if (!user || !user.name || !user.pass) { 
    return unauthorized(res); 
    }; 

    if (user.name === 'Admin' && user.pass === 'myPassword') { 

    return next(); 
    } else { 
    return unauthorized(res); 
    }; 
}; 

。不正な資格情報を使用してログインする場合は、不正なオブジェクトが返され、フロントエンドに記録されますが、正しく認証されていれば、私には見えないオブジェクトはありません。

ご協力いただきまして誠にありがとうございます。追加のコードなどが必要な場合は、私に教えてください!

ありがとうございました!

答えて

0

あなたのコードによれば、(!user || !user.name || !user.pass)の場合、return unauthorized(res);unauthorised関数が以前に定義されていて、ステータスとヘッダーをフロントエンドに送り返す責任があります。

しかし、成功したログイン(user.name === 'Admin' && user.pass === 'myPassword')の場合は、return next()しかありません。次の関数は、コード内の次のミドルウェアに移動します。あなたが望むものを達成するために

、あなたは実際にはフロントエンドに何かを返す必要があります:

if (user.name === 'Admin' && user.pass === 'myPassword') { 
res.end('Access granted'); 
} 
関連する問題