1

私のアプリケーションでは、ユーザーを登録しているときに、ユーザー名、パスワード、および jwt で生成されたトークンを MONGO DB のこれらのフィールドに保存しています。ユーザーが正しい資格情報でログインしようとすると、保存されたトークンで応答を送信します。コントローラー) クライアントから送信されたすべての要求に対して同じトークンを送信できるように、localstorage を使用してトークンを格納しています。しかし、この手順に関していくつかの問題が見つかりました。

  1. 毎回1人のユーザーに対して同じトークンを生成しています。したがって、第三者がトークンを取得できれば、制限されたページにアクセスできます。
  2. 生成されたトークンをMONGODBに保存することで、dbのスペースを無駄にしていますか?
  3. ユーザー以外の誰でも localstorage に格納されたトークンにアクセスできますか?
  4. シングルページアプリケーションのすべてのリクエストに対して、再びmongodbにクエリを実行してそのユーザーのトークンを取得し、検証しています.ここでは、クライアント側とサーバー側の両方をチェックしています.

jwt を使用して、アプリケーションでトークン、Node、Express、Mongoose を生成しています

私は適切な手順に従っていますか。そうでない場合は、私のアプローチまたは新しいアプローチの解決策を提供してください。トークンベースの認証とセッションベースの認証について多くのサイトを検索しましたが、何もうまくいきませんでした。注:私はNodejs、AngularjSの初心者です

4

3 に答える 3

1

トークンを次のような高度なキー値キャッシュ ツールに保存する必要があります: Redis これにより、パフォーマンスが大幅に向上します。

初めてデータベースからトークンを取得し、Redis に保存する必要があります。以前は、トークンをキーとして、ユーザー名を値として設定していました。次のリクエストでは、キャッシュからトークンが渡されます。Redis では、トークンの有効期限を設定できます。

于 2015-06-07T22:56:01.710 に答える
0

ログイン時にヘッダーに表示されるため、JWT を mongoose に保存したくありません。最初にトークンを生成し、crypto などのモジュールを使用してハッシュします。

これにはさまざまな方法があり、それらはすべてトークンを処理するPassportを使用します。サンプル プロジェクトSatellizerを次に示します。

angular-fullstackプロジェクトを生成することをお勧めします。次に、server/auth フォルダーと client/account フォルダーを調べます。MEAN ベースのアプリで認証を安全に処理する方法について説明します。

于 2015-06-07T22:53:08.643 に答える