4

次の認証方法が正しいかどうか疑問に思っています。落とし穴や足りないものはありますか?提案や議論は大歓迎です。

1> ユーザーはユーザー名とパスワードを提供し、RPC でサーバーに送信します。DBに格納されているハッシュ値と比較。

2> ユーザー名とパスワードが正確であると仮定すると、認証トークンがセッションに保存されます。サーブレットにアクセスするときに、認証トークンがチェックされます。

3> ユーザー ID (整数) が RPC onSuccess によってクライアントに返されます。ユーザー ID は、クライアント側の静的変数に保存されます。

4> ユーザー固有の情報が必要な場合は常に、ユーザー ID (静的変数) を使用した rpc 呼び出しがデータベース クエリのためにサーバーに送信されます。

ありがとう

4

3 に答える 3

2

トークンをクライアント側に返し、ユーザー ID の代わりにトークンを検証することをお勧めします。ユーザー ID を使用すると、ユーザー A がログインし、別のユーザーがユーザー A になりすましてサーバーに要求を送信できます。認証方法でデータを保護できませんでした。

于 2013-09-23T10:02:55.707 に答える
2

ユーザー ID をクライアントに送信する必要はありません。サーバーには、ユーザーを認識するために必要なすべての情報が既に含まれています。

このコード スニペットはセッション Cookie を作成し、session.getId()そのコンテンツを取得します。ユーザーを認識するために保存する必要があります。

HttpServletRequest request = this.getThreadLocalRequest();
HttpSession session = request.getSession(true);

次に、ユーザーがサーバーを呼び出したときに、セッション ID を読み返すだけです。

HttpServletRequest request = this.getThreadLocalRequest();
HttpSession session = request.getSession(false);

session.invalidate()セッションを破棄できるので、オブジェクトをセッションに保存することもできます

this.getThreadLocalRequest()*Impl でのみ機能します。

于 2013-09-23T10:04:31.097 に答える
0

あなたが引用した

3> ユーザー ID (整数) が RPC onSuccess によってクライアントに返されます。ユーザー ID は、クライアント側の静的変数に保存されます。

ユーザーがページを更新すると、クライアント側の静的フィールドに保存されている値がリセットされますよね? その場合、セッションは終了しますか?ユーザーは再度ログインするように求められますか?

于 2013-09-23T09:36:22.350 に答える