2

Web アプリ用の REST API を作成しています。これはステートレスである必要があるため、HTTP 基本認証を使用してユーザーの資格情報を送信しています。

リクエストごとにユーザー データベースを参照してユーザー名/パスワードを検証する必要があるというのは正しいですか? これは、「ステートレス ルール」を破った場合に一度検証してセッションに保持できることを考えると、多くの不要なリクエストのように思えます。

4

2 に答える 2

1

認証にセッション Cookie を使用しない場合は、各リクエストを検証する必要があります。ただし、資格情報をサーバー コードのどこかにキャッシュして、呼び出しのたびにデータベースにクエリを実行する必要がないようにすることもできます。

基本的に、データを長時間保存しないように注意する必要があります。たとえば、ユーザーが資格情報を変更する可能性があります。キャッシュが一致しない場合は、別のデータベース ルックアップを行う必要があります。

于 2013-03-14T15:51:14.920 に答える
1

代わりに、資格情報を確認するユーザー名/パスワードのグローバル キャッシュを保持できます。リクエストはステートレスのままですが、各リクエストでデータベース (または別のソース) にアクセスしてユーザーを検証するよりもパフォーマンスが向上します。

もう 1 つのオプションは、暗号化された認証トークンを返す Login メソッドを作成することです。その後、他のすべてのメソッドはこのトークンを期待し、パスワードの代わりにそれを検証します。このアプローチでは、http Basic だけでなく、さまざまな認証メカニズムを使用することもできます。

于 2013-03-14T15:51:44.090 に答える