0

私は ajax アプリケーションを作成しています。認証には allowanonymous 属性を使用しています ( http://blogs.msdn.com/b/rickandy/archive/2011/05/02/securing-your-asp-net-mvc- 3-application.aspx )

現在、誰かが Web アプリケーションにアクセスするとすぐに ~/Account/LogOn にリダイレクトされ、ログインが成功すると RedirectToAction("Index", "Home"); が返されます。ブラウザの URL は http:// website/ と表示され、そこからは ajax 呼び出しのみを使用するため、URL は同じままです。(コンテンツは json を使用して呼び出され、返されたデータはメイン div に含まれます)

ログオン ページでも URL をルート ディレクトリ (http://website/) にするつもりです。どうすればそれを達成できますか?リダイレクトなしで、webapp 全体を ajax にしたい。このまま Ajax を適用すると、ログイン後も URL は http://website/Account/LogOn のままです。

4

2 に答える 2

0

MVC 4をインストールすることをお勧めします。これには、シングルページアプリと呼ばれる、必要なことを正確に実行するデフォルトのテンプレートがあります。アプリにMVC4を使用する必要はありませんが、同じ手法に基づいてアプリを作成できます。そうすれば、ほとんど問題なくリリースされたときにMVC4に更新できます。

MVC4は現在ベータ版ですが、今年の夏にリリースされる予定です。MVC4はGo-Liveライセンスでも利用できるため、MVC4を使用して本番サイトを公開できます。

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

于 2012-04-10T17:15:36.683 に答える
0

方法を見つけたので、デフォルトのルートを次のように編集しました。

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>

ログオン方法:

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

これはトリックをしました:)

于 2012-04-11T00:37:49.580 に答える