0

好的,我必须在这里遗漏一些明显的东西,但在任何地方都找不到答案。

我在本地机器上的 .Net 4 中使用 FormsAuthentication。当我尝试访问安全页面时,.Net 将我重定向到 login.aspx 并在查询字符串中附加 ReturnUrl。例如 /pages/security/login.aspx?ReturnUrl=%2fPages%2fFriends.aspx

当我使用正确的详细信息登录时,我不会被重定向到 ReturnUrl - 相反,我会被重定向到 web.config defaultUrl 参数中的任何内容。

我的 web.config 看起来像这样:

<authentication mode="Forms">
        <forms loginUrl="/pages/security/login.aspx" defaultUrl="/default.aspx" timeout="129600" />
    </authentication>

这是重定向行:

FormsAuthentication.RedirectFromLoginPage(userID.ToString(), rememberMe);

我在 web.config 中放入 defaultUrl 的内容就是我被重定向到的内容。事实上,这也是我检查时 FormsAuthenticaton.GetRedirectUrl 中的值。.Net 似乎忽略了 ReturnUrl,但我想不出为什么。

有任何想法吗?

4

1 回答 1

0

好的,这是我的一个愚蠢的疏忽,但我想我会与您分享“解决方案”,因为它可能会帮助其他遇到这些症状的人。

查询字符串被剥离的原因是我的母版页中有一行将表单操作转换为小写,作为避免搜索引擎重复 URL 的一部分。该行正在更新表单操作,但没有附加查询字符串。

因此,如果您在回发时丢失了查询字符串值,请检查以确保表单标记中的操作值包含该查询字符串。

于 2012-08-18T12:20:05.213 回答