0

我正在编写一个 ajax 应用程序,我正在使用属性 allowanonymous 进行身份验证(http://blogs.msdn.com/b/rickandy/archive/2011/05/02/securing-your-asp-net-mvc- 3-应用程序.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

我找到了一种方法,我将默认路由编辑为:

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

网络配置:

<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 回答
0

我建议安装 MVC 4,它有一个完全符合您要求的默认模板,称为单页应用程序。您不必为您的应用程序使用 MVC4,但您可以将您的应用程序基于相同的技术。这样,您可以在 MVC4 发布时更新到几乎没有问题。

MVC4 目前处于 Beta 阶段,但预计将于今年夏天发布。MVC4 也可通过 Go-Live 许可证获得,因此您可以使用它发布生产站点。

如果您使用正确的术语也会有所帮助。MVC 有操作方法和路由,而不是“目录”。路由是任意的,与服务器上的物理目录不匹配。

于 2012-04-10T17:15:36.683 回答