24

jQuery ajax 呼び出しを使用して、ASP.NET MVC でフォーム認証を実行することは可能ですか? そのような例を見つけることができませんでした。

より具体的には、認証された ajax リクエストを連続して作成できるように、(リダイレクトなしで) ページに認証 Cookie を設定するにはどうすればよいですか?

4

2 に答える 2

18

はい、可能です。ここでマイク・ボッシュが説明した方法を使用してログインフォームを送信し、returnUrl があれば JSON データ構造を返します。

json として返す軽量の LoginResultDTO クラスを作成しました。

public class LoginResultDTO
{
  public bool Success {get;set;}
  public string Message {get;set;}
  public string ReturnUrl {get;set;}
}

LogOn ビューのスクリプト ブロックは次のとおりです。

<script type="text/javascript">
        $(document).ready(function() {
            var form = $($("form")[0]);
            form.submit(function() {
                var data = form.serialize();
                $.post(form.attr("action"), data, function(result, status) {
                    if (result.Success && result.ReturnUrl) {
                            location.href = result.ReturnUrl;
                    } else {
                        alert(result.Message);
                    }
                }, "json");
                return false;
            });
        });
</script>

これにより、ログオンフォームが ajax でラップされます。これは可能な JavaScript コードの最も単純な実装ですが、開始する場所であることに注意してください。

次に、AccountController の LogOn アクションを変更し、関連する場所に次のように配置しました。

if(Request.IsAjaxRequest())
{
  return Json(new LoginResultDTO{Success=true,Message="Successfully logged in"});
}else
{
  return View();
}

したがって、これは超軽量ですが、asp.net mvc で jquery 認証を行う方法の完全なバージョンです。

于 2009-01-30T14:25:21.600 に答える
0

xValを見てください。任意のクライアント側検証ライブラリを使用できますが、デフォルトではjQuery検証を使用します。

于 2009-01-30T16:52:26.747 に答える