あなたは理想的には、クライアントから非同期で呼び出すことができるアクションをしたいと思うように聞こえます。これは標準的なMVCコントローラーアクションの形を取ることができますが、これをWeb APIコントローラーに組み込むことを検討することができます(通常、HTML以外の応答を提供するためにWeb APIコントローラーを使用します)。あなたはので、私は今それに入るが、あなたがこのようになりますHttpResponseMessage結果メソッドを持って言わせません。ウェブ上で多くの場所でWeb APIについての詳細を読むことができます:
あなたが返すことができ、このパターンを使用して
[HttpPost]
public HttpResponseMessage CheckCredentials(string username, string password)
{
// Check user credentials and return either one of the following results:
// If credentials valid
return Request.CreateResponse(HttpStatusCode.OK);
// If not valid
return Request.CreateErrorResponse(HttpStatusCode.BadRequest);
}
有効な資格情報の場合は「200 OK」、無効な資格情報の場合は「400 Bad Request」となります。
既に述べたように、ページ上に表示されない認証プロンプトに必要なHTMLコンテンツを持つことができます。ユーザーが認証が必要なアクションを実行すると、ポップアップをレンダリングできます。ユーザーがポップアップを送信すると、前に作成したWeb APIエンドポイントへの非同期要求を起動できます。戻ってくる応答に応じて、タスクを続行するか、エラーメッセージとともに資格情報のプロンプトを再度表示します。
私たちが要求した以上にユーザーの資格情報を送信する場合は、HTTPSを使用していることを確認してください。
編集:クリスは、後述するように
、このソリューションは、クライアントの手の中にあなたの「クイックチェック」を残します。ユーザーが資格情報を再入力せずに簡単にアクションを実行できないようにするには、に完全にを頼るべきではありません。
ユーザー名とパスワードを隠しフィールドとして保存し、メインの同期POSTにそれらを含めることができます。これにより、ユーザーがサーバーから有効な資格情報を入力したことを確認できます。
ありがとうございました。ポップアップに手間がかかっていたので、ポップアップを表示するのではなく、実際にパスワード確認フィールドをフォーム自体に追加するという方法がありました。 – Baz