我正在开发用户身份验证网站。 我有一个登录页面,“Login.aspx”,其中我提供了一个登录控件。 在web.config中,
<authentication mode="Forms">
<forms name=".AuthenticationCookie" loginUrl="Login.aspx" protection="All" timeout="60" path="/">
<credentials passwordFormat="Clear">
<user name="Jack" password="Jerry"/>
</credentials>
</forms>
</authentication>
<authorization>
<deny users="*"/>
</authorization>
在login.aspx.cs页面中, 我提供了,
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
if (FormsAuthentication.Authenticate(Login1.UserName,Login1.Password))
{
FormsAuthentication.SetAuthCookie(Login1.UserName,true);
Label1.Text = "Login Successful";
Login1.InstructionText = "";
FormsAuthentication.RedirectFromLoginPage(Login1.UserName, true);
Response.Redirect("Success.aspx")
}
else
{
Label1.Text = "You are not an authentic user";
}
}
}
但是,虽然执行而不是成功.aspx 使用网址http://localhost/Login.aspx?ReturnUrl=%2fSuccess.aspx
为什么会这样?
答案 0 :(得分:1)
如果要自己设置表单auth cookie并根据ReturnUrl查询字符串参数正确重定向,则应查看FormsAuthentication.RedirectFromLoginPage方法。在您的示例中,它将是:
FormsAuthentication.RedirectFromLoginPage(Login1.UserName, true);
该方法设置相应的Forms auth cookie / ticket,然后根据ReturnUrl参数的存在与否重定向。 (如果不存在,则转到配置的默认页面。)
希望这有帮助,
尼