如何在asp.net中将登录链接更改为注销链接

如何在asp.net中将登录链接更改为注销链接,asp.net,login,logout,Asp.net,Login,Logout,在登录页面上,我使用了这个登录链接,我想在用户登录时将该链接更改为注销链接。我将不胜感激 Login.aspx <div id="header"> <div class="loginDisplay"> [ <a href="~/Login.aspx" id="HeadLoginStatus" runat="server">Log In</a> ] </div> public partial class Logi

在登录页面上,我使用了这个登录链接,我想在用户登录时将该链接更改为注销链接。我将不胜感激

Login.aspx

<div id="header">
        <div class="loginDisplay">
 [ <a href="~/Login.aspx" id="HeadLoginStatus" runat="server">Log In</a> ]

</div>
  public partial class Login : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        lbInfo.Enabled = false;
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        string strcon = "Data Source=MUNIZA\\SQLEXPRESS;Initial Catalog=LD_Server;Integrated Security=True";

        SqlConnection con = new SqlConnection(strcon);
        SqlCommand com = new SqlCommand("spStudentProfile", con);

        com.CommandType = CommandType.StoredProcedure;
        SqlParameter p1 = new SqlParameter("RegNo", TextBox2.Text);

        SqlParameter p2 = new SqlParameter("Password", TextBox1.Text);

        com.Parameters.Add(p1);
        com.Parameters.Add(p2);
        con.Open();

        SqlDataReader rd = com.ExecuteReader();
        if (rd.HasRows)
        {
            rd.Read();
            Response.Redirect("~/Home.aspx");
        }
        else
        {
            lbInfo.Enabled = true;
            lbInfo.Text = "Invalid username or password.";
        }
      }
    }
如果您使用asp.net成员资格技术之一登录用户并检查其权限,则会更加安全,但以下是一个基于代码尝试执行的快速解决方案:

只需添加会话属性,并对代码进行以下更改即可实现所需的功能:

public bool IsAuthenticated
{
   get { return Convert.ToBoolean(Session["sIsAuthenticated"] ?? false); }
   set { Session["sIsAuthenticated"] = value; }
}

protected void Button1_Click(object sender, EventArgs e)
{
   //your codes ...

    if (rd.HasRows)
    {
        IsAuthenticated = true;
        //your codes ...
    }
    else
    {
        IsAuthenticated = false;
        //your codes ...
    }
 }
现在在.aspx页面中,您可以看到如下内容:

<div id="header">
 <div class="loginDisplay">
 <%: IsAuthenticated ?  "[ <a href='" + ResolveUrl("~/Logout.aspx") + "'>Log Out</a> ]" : 
                        "[ <a href='" + ResolveUrl("~/Login.aspx") + "'>Log In</a> ]" %>
</div>

如何检查用户是否已登录?如果我在另一个页面上使用登录链接怎么办?您只需使用一次登录代码中第一部分上面的代码,就可以在web表单中的任何位置使用链接第二部分。当我在其他页面上使用它时,它会说,IsAuthenticated在当前上下文中不存在。这是正确的,因为IsAuthenticated的值有效,但该属性在其他页面中无效,您应该在页面中使用会话值,或者将IsAuthenticated放在一个基本页面类中。我将其放在每个页面上,它现在正在工作,codepublic bool已验证{get{return Convert.ToBooleanSession[sIsAuthenticated]??false;}set{Session[sIsAuthenticated]=value;}code
       <%: Session["sIsAuthenticated"].toString ()  == "true" : ...
 <%
    string url = "~/Login.aspx", text = "Log in";
    if (Convert.ToBoolean(Session["sIsAuthenticated"] ?? false))
    { url = "~/Logout.aspx"; text = "Log out"; }
 %>
<a href="<%: ResolveUrl(url) %>"><%: text %></a>
    protected void Page_Load(object sender, EventArgs e)
    {
        Session.Remove("sIsAuthenticated");
        Response.Redirect("~/Login.aspx");
    }