0

Google は、HttpServletRequest リクエスト パラメータを渡さずに userService.getCurrentUser() を呼び出すことをどのように許可していますか? UserService を拡張しようとしていますが、簡単にはできません。

UserService と重複する独自の認証メカニズムを作成して、Google がサポートするユーザーと自動的にログインするユーザーを許可できるようにしました。しかし、関数から呼び出されたときに getCurrentUser を送信する方法を知りたいです。

これが現在のワークフローです

リソースを保護するためのリクエスト -> フィルター -> 現在のユーザーをどこかに設定しますが、httprequests を渡さずにアプリケーションの残りの部分から呼び出すことができる場所がわからない..

私のコードで

GetCurrentUser() は、フィルターに設定されたユーザーを返す必要があります。元の HttpServletRequest を渡さないことに注意してください

ありがとう。

4

1 に答える 1

0

数日間の調査の後、セッション情報を ThreadLocal に安全に保存できます。これは、サーブレット フィルターで設定されます。 WebApp の静的 ThreadLocal 変数 - セキュリティ/パフォーマンスの問題はありますか?

各サーブレットは 1 つのスレッドで実行されるため、コードから getCurrentUser を安全に呼び出すことができ、コードはスレッドローカルから読み取ります。

ただし注意。スレッドはリサイクルされます。したがって、別のユーザー用にスレッドローカルが設定されたスレッドを取得できます。毎回リセットされることを確認する必要があります。

于 2012-11-27T05:55:35.997 に答える