表单身份验证Cookie未设置?

时间:2013-09-12 09:20:31

标签: c# asp.net cookies asp.net-membership forms-authentication

我正在尝试使用FormsAuthentication.RedirectFromLoginPage(username,true,cookiepath); 使用FormsAuthentication.RedirectFromLoginPage时,它会重定向到web.config中提供的DefaultUrl

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。

在我的响应标头中, Set-Cookie 包含身份验证Cookie,但未在homepage.aspx页面中设置。

因此LoginStaus和LoginName控件无效。

1 个答案:

答案 0 :(得分: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"等等。