1

我正在尝试使用FormsAuthentication.RedirectFromLoginPage(username,true,cookiepath); On 使用FormsAuthentication.RedirectFromLoginPage它重定向到DefaultUrlweb.config 中提供的内容。

web.config 中的身份验证部分:

<authentication mode="Forms">
<forms name=".ASPXADMINAUTH" 
               loginUrl="/Default.aspx" 
               defaultUrl="homepage.aspx"
               protection="All"
              timeout="30" path="/admin" slidingExpiration="true" enableCrossAppRedirects="false" cookieless="UseCookies" domain="localhost" ticketCompatibilityMode="Framework20" ></forms>
</authentication>

在 httpModules 部分:

<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" />

该页面正在从登录页面重定向到“homepage.aspx”,但它没有设置身份验证 cookie。

在我的Response header中,Set-Cookie包含 Authentication cookie,但未在 homepage.aspx 页面中设置。

所以 LoginStaus 和 LoginName 控件不起作用。

4

1 回答 1

2

您的代码中的问题是path="/admin" domain="localhost"

根据你的代码

用户登录后,会在 /admin 下设置一个 cookie。结果,/admin 文件夹下的每个页面都知道用户已通过身份验证,例如 ~/admin/default.aspx。

但是~/homepage.aspx 不知道用户,因为~/homepage.aspx 无法读取写在/admin 下的cookie。

var path = FormsAuthentication.FormsCookiePath;
FormsAuthentication.RedirectFromLoginPage("win", false, path);

如何解决?

你想慢慢开始使用简单的。然后根据您的需要进行调整。

<forms loginUrl="~/Default.aspx" timeout="2880" defaultUrl="~/homepage.aspx" />

仅供参考:请不要添加默认属性,例如slidingExpiration="true", enableCrossAppRedirects="false"等等。

于 2013-09-12T19:40:15.083 回答