1

我正在增强 Web 应用程序的安全性。(确切地说是会话/会员 cookie 到期)。当我尝试在经过身份验证之前导航到页面时,我注意到了一些奇怪的事情。该页面在登录时工作,当我在登录前尝试访问它时,我被重定向到登录页面(正常),但是我被发送到的位置不正确。似乎它缺少 URL 中的区域。我想知道这是否与路线有关?

以下是更多信息:

来自 web.config 的代码:

<authentication mode="Forms">
        <forms loginUrl="~/logininformation/loginhomepage" timeout="2880" />
    </authentication>
  • 原网址:mysite.com/Display/Page/Index/62
  • URL 重定向到登录后:mysite.com/logininformation/loginhomepage?ReturnUrl=%2fPage%2fIndex%2f62
  • 登录后的网址:mysite.com/Page/Index/62

来自登录控制器的代码:

if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
                    && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
                {
                    return Redirect(returnUrl);
                }
4

1 回答 1

0

如果您没有“区域”的自定义路由,请在 RouteConfig.cs 文件中的登录路由下尝试以下类似操作。

routes.MapRoute(
    name: "CustomRoute",
    url: "{area}/{controller}/{action}/{id}",
    defaults: new { controller = "Page", action = "Index",id = UrlParameter.Optional}
);
于 2013-10-28T16:31:07.170 回答