Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于c的asp.net登录系统#_C#_Asp.net - Fatal编程技术网

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