重い計算を実行し、大きな結果(ファイルにダウンロードされる)を生成するRESTサービス(RESTeasyを使用)を開発しています。 システムを保護するために、同時呼び出しを防止して同じユーザーによる実行を制限することにしました。RESTサービス:ユーザーあたりの同時呼び出しを防止する
私はこのように、セッションに変数を置くことを考えた:ユーザーごと、ない
//check if service is running before execution if (Boolean.parseBoolean((String) session.getAttribute("isRunning"))) { throw new WebApplicationException(Response.status( Response.Status.FORBIDDEN).entity("Service is currently running!").build()); } //on execution session.setAttribute("isRunning", "true"); //after execution finally { session.setAttribute("isRunning", "false"); }
が、これは、セッションあたりの使用量
を制限します。
どのようにあなたのシステムは、ユーザを識別していますか?ログオン操作を受け入れてセッションを作成するか、各要求と共に送信される資格情報ですか、クライアント証明書などを使用していますか? –
はい。私は、要求オブジェクトを通じてユーザーにアクセスします。認証はBASICスキームで行われます – MoneerOmar