2012-04-10 10 views
0

私は誰がアクセスするとすぐに、(http://blogs.msdn.com/b/rickandy/archive/2011/05/02/securing-your-asp-net-mvc-3-application.aspxASP.NET MVC 3の認証、リダイレクトなし(アヤックス)

今日autenticationためatributeののAllowAnonymousを使用しています、Ajaxアプリケーションを書いています〜/ Account/LogOnにリダイレクトされ、ログインが成功すると、RedirectToAction( "Index"、 "Home")が返されます。ブラウザーのURLはhttp:// website /と表示され、そこからはajax呼び出ししか使用されないので、URLはそのままです。 (コンテンツはjsonを使用して呼び出され、返されたデータはメインディビジョンに含まれます)

私は、URLをログオンページのルートディレクトリ(http:// website /)にしたいと考えています。どうすればいいですか? Webapp全体をリダイレクトなしでajaxにしたい。現時点でAjaxを適用すると、URLは既にログインした後でもhttp:// website/Account/LogOnのままになります。

答えて

0

MVC 4をインストールすることをお勧めします。これには、1ページのアプリケーションと呼ばれる、まったく同じ機能を持つデフォルトのテンプレートがあります。あなたのアプリケーションにMVC4を使用する必要はありませんが、あなたは同じテクニックであなたのアプリをベースにすることができます。そうすれば、ほとんど問題なくリリースされた時点でMVC4にアップデートできます。

MVC4は現在ベータ版ですが、今夏リリースされる予定です。 MVC4はGo-Liveライセンスでも利用できるため、プロダクションサイトを公開することができます。

また、適切な用語を使用すると役立ちます。 MVCにはアクションメソッドとルートがあり、 "ディレクトリ"はありません。ルートは任意であり、サーバー上の物理ディレクトリとは一致しません。これはトリックをした

[AllowAnonymous] 
public ActionResult LogOn() 
{ 
    if (User.Identity.IsAuthenticated) 
    { 
     return View("Home"); //Show welcome message 
    } 
    return View(); //Show logon form 
} 

routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Account", action = "LogOn", id = UrlParameter.Optional } // Parameter defaults 
     ); 

のWeb.config:

<authentication mode="Forms"> 
    <forms loginUrl="~/" timeout="120" /> 
</authentication> 

[ログオン方法

+0

ありがとう、私はまだMVC4を見たことはありませんでしたが、私は自分がやりたいことをする方法を見つけました。 ご使用の用語を修正していただきありがとうございます。私はタイトルで欲しかったことを説明する方法が本当にわからなかった。 –

0

私が行うための方法を見つけ、私はに私のデフォルトルートを編集しました:)