C# 基于c的asp.net登录系统#
我有四个页面C# 基于c的asp.net登录系统#,c#,asp.net,C#,Asp.net,我有四个页面login.aspx,main.aspx,Sub.aspx,final.aspx。最终页面需要身份验证才能访问,这是我使用表单身份验证提供的。通过login.aspx登录会重定向到Final.aspx,因为defaultUrl设置为Final.aspx。目前我正在从main.aspx到sub.aspx到Final.aspx它在登录final.aspx后重定向到login.aspx。我想要的是,如果我从login.aspx开始,它应该重定向到main.aspx到sub.aspx到fin
login.aspx
,main.aspx
,Sub.aspx
,final.aspx
。最终页面需要身份验证才能访问,这是我使用表单身份验证提供的。通过login.aspx
登录会重定向到Final.aspx
,因为defaultUrl
设置为Final.aspx
。目前我正在从main.aspx
到sub.aspx
到Final.aspx
它在登录final.aspx
后重定向到login.aspx
。我想要的是,如果我从login.aspx
开始,它应该重定向到main.aspx
到sub.aspx
到final.aspx
,从sub.aspx
跳到final.aspx
不应该重定向到登录,因为已经登录了。
但是直接访问final.aspx
应该总是重定向到login.aspx
登录码
protected void Button1_Click(object sender, EventArgs e)
{
if (TextBox1 .Text =="abc" && TextBox2 .Text =="xyz")
{
FormsAuthentication.RedirectFromLoginPage(TextBox1.Text, false);
}
else
{
Response.Write("w");
}
}
最后一页代码
protected void Page_Load(object sender, EventArgs e)
{
if (User .Identity .IsAuthenticated )
{
Response.Write("welcome");
}
else
{
FormsAuthentication.RedirectToLoginPage();
}
}
网络配置
<authentication mode ="Forms">
<forms name ="abc" loginUrl ="login.aspx" defaultUrl="final.aspx"/>
</authentication>
我会这样做:
protected void Page_Load(object sender, EventArgs e)
{
if (Request.IsAuthenticated)
{
Response.Write("welcome");
}
else
{
Response.Redirect("/login.aspx");
}
}
我可能会首先显示一条消息“未授权。请登录”,并链接到登录页面。而不是重定向
希望这有帮助 对于这种情况,我建议您使用一个更好的会话来处理URL重定向和身份验证 试试这个 要使用会话,您需要继承类中的“页面”:
public class Class1 : Page
子页面
aspx:
<a id="gotofinal" href="#" OnClick="GoToFinal_Click">Go To Final</a>
protected void GoToFinal_Click(object sender, EventArgs e)
{
Session["GoToFinal"] = "Y";
Response.Redirect("final.aspx");
}
最后一页:
protected void Page_Load(object sender, EventArgs e) {
if ((string)Session[IsAuthenticated] == "Y")
{
Session["GoToFinal"] = "";
Response.Write("welcome");
}
else
{
Response.Redirect("login.aspx");
}
}
protected void Page_Load(object sender, EventArgs e) {
Session["IsAuthenticated"] = "";
}
protected void Button1_Click(object sender, EventArgs e)
{
if (TextBox1.Text == "abc" && TextBox2.Text == "xyz")
{
Session["IsAuthenticated"] = "Y";
if (!String.IsNullOrEmpty((string)Session["GoToFinal"]) && (string)Session["GoToFinal"] == "Y")
{
Response.Redirect("final.aspx");
}
else
{
Response.Redirect("main.aspx");
}
}
else
{
Response.Write("Login Failed");
}
}
登录页面:
protected void Page_Load(object sender, EventArgs e) {
if ((string)Session[IsAuthenticated] == "Y")
{
Session["GoToFinal"] = "";
Response.Write("welcome");
}
else
{
Response.Redirect("login.aspx");
}
}
protected void Page_Load(object sender, EventArgs e) {
Session["IsAuthenticated"] = "";
}
protected void Button1_Click(object sender, EventArgs e)
{
if (TextBox1.Text == "abc" && TextBox2.Text == "xyz")
{
Session["IsAuthenticated"] = "Y";
if (!String.IsNullOrEmpty((string)Session["GoToFinal"]) && (string)Session["GoToFinal"] == "Y")
{
Response.Redirect("final.aspx");
}
else
{
Response.Redirect("main.aspx");
}
}
else
{
Response.Write("Login Failed");
}
}
您还需要在final.aspx中单击注销按钮以清除会话[IsAuthenticated]
Session["IsAuthenticated"] = "";
希望能有所帮助。我想你可能误解了这个问题。我不知道你说的重定向到和到是什么意思。。。你不是在每个页面上都有逻辑来决定如何处理请求吗?案例1-如果我先用登录页面启动应用程序,结果将重定向到final.aspx,但我需要它转到主页,再转到final(请求登录)案例2-如果我使用主页启动应用程序,然后再使用子页面。用户应重定向至login.aspx,成功登录后应重定向至final.aspx-在这两种情况下,直接访问最终页面应始终重定向至login,我正在使用页面中的超链接移动您是否有webforms或mvc?我正在使用webforms