gpt4 book ai didi

c# - 重定向 URL 不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 13:04:56 25 4
gpt4 key购买 nike

我想在访问所有网页之前添加授权。所以我在web.config中使用了如下配置

<authentication mode="Forms">
<forms loginUrl="~/Login/Login.aspx" />
</authentication>
<authorization>
<deny users="?"/>
</authorization>

此后对于每个页面 Login.aspx 询问,但在成功登录后重定向不适用于以下代码。

//http://localhost:55217/Login/Login.aspx?ReturnUrl=%2fHome%2fdeleteUser.aspx

if (returnMsg == "Success") {
string query0 = Request.QueryString[0];
finalStr = "~" + query0;
Response.Redirect(finalStr, false);

//Session["Login"] = username;
//Response.Redirect("~/Home/Home.aspx");
//Response.Redirect("/Home/HomeTest.aspx");
} else {
StatusLabel.Attributes["style"] = "color:red; font-weight:bold;";
StatusLabel.Text = "Error: Username or Password Wrong";
}

它再次停留在登录页面上,要求提供凭据。但不显示错误 "Error: Username or Password Wrong"

知道为什么它不起作用吗?

最佳答案

如果您使用 Forms 身份验证,则需要在身份验证成功时创建一个身份验证 cookie。否则 ASP.NET 子系统将不知道身份验证成功。

查看这篇文章: https://support.microsoft.com/en-us/kb/301240

这是这篇文章的相关文本:

4.您可以使用两种方法中的一种来生成表单例份验证 cookie,并在 cmdLogin_ServerClick 事件中将用户重定向到适当的页面。为这两种情况提供了示例代码。根据您的要求使用它们中的任何一个。

•调用RedirectFromLoginPage 方法自动生成表单例份验证cookie 并在cmdLogin_ServerClick 事件中将用户重定向到适当的页面:

private void cmdLogin_ServerClick(object sender, System.EventArgs e)
{
if (ValidateUser(txtUserName.Value,txtUserPass.Value) )
FormsAuthentication.RedirectFromLoginPage(txtUserName.Value,
chkPersistCookie.Checked);
else
Response.Redirect("logon.aspx", true);
}

• 生成身份验证票证、对其进行加密、创建 cookie、将其添加到响应中并重定向用户。这使您可以更好地控制如何创建 cookie。在这种情况下,您还可以将自定义数据与 FormsAuthenticationTicket 一起包含在内。

private void cmdLogin_ServerClick(object sender, System.EventArgs e)
{
if (ValidateUser(txtUserName.Value,txtUserPass.Value) )
{
FormsAuthenticationTicket tkt;
string cookiestr;
HttpCookie ck;
tkt = new FormsAuthenticationTicket(1, txtUserName.Value, DateTime.Now,
DateTime.Now.AddMinutes(30), chkPersistCookie.Checked, "your custom data");
cookiestr = FormsAuthentication.Encrypt(tkt);
ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr);
if (chkPersistCookie.Checked)
ck.Expires=tkt.Expiration;
ck.Path = FormsAuthentication.FormsCookiePath;
Response.Cookies.Add(ck);

string strRedirect;
strRedirect = Request["ReturnUrl"];
if (strRedirect==null)
strRedirect = "default.aspx";
Response.Redirect(strRedirect, true);
}
else
Response.Redirect("logon.aspx", true);
}

关于c# - 重定向 URL 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31078339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com