我正在尝试使用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控件无效。
答案 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"
等等。