登录和注销母版页 [英] Login and Logout in master page

查看:218
本文介绍了登录和注销母版页的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这里登录和注销按钮在母版页。在登录页面使用FormsAuthenticationTicket和HttpCookie,所以在主页我想检查表单认证,然后显示logout如果被认证和隐藏登录。如果未认证显示登录和隐藏退出。我如何做到这一点?



登录:

  com.CommandText =select [id],[username],[password],[type] FROM [users] WHERE [username] = @ username AND [password] = @pass 
com.Parameters.AddWithValue(@ username,UserName.Text);
com.Parameters.AddWithValue(@ pass,Password.Text);
// conn.Open();
SqlDataReader rd = com.ExecuteReader();

if(rd.Read())
{

var _id = rd [id]。

var _fname = rd [username]。ToString();

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(

1,
_id,
DateTime.Now,
DateTime.Now.AddMonths(1) ,
true,
。+ _fname,
FormsAuthentication.FormsCookiePath);
string hashed_ticket = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName,hashed_ticket);

if(ticket.IsPersistent)cookie.Expires = ticket.Expiration;

Response.Cookies.Add(cookie);

Response.Redirect(UserProfile.aspx);

}
else
{
ClientScript.RegisterStartupScript(Page.GetType(),validation,< script language ='javascript'> alert 'Invalid Username and Password')< / script>);
}
}

主页HTML:

 < ul class =nav navbar-nav navbar-right> 
< li>< asp:LinkBut​​ton ID =loginrunat =server
PostBackUrl =〜/ Login1.aspx>登录< / asp:LinkBut​​ton> < / li>
< li> < asp:LinkBut​​ton ID =Logoutrunat =serverCausesValidation =Falseonclick =Logout_Clickstyle =text-align:right>(logout)< / asp:LinkBut​​ton>< / li> ;
< / ul>

主页后面的代码:

  if(!HttpContext.Current.User.Identity.IsAuthenticated)
{
Logout.Visible = false;


}
else
{
Logout.Visible = true;
if(Request.Cookies [FormsAuthentication.FormsCookiePath]!= null)
{
FormsIdentity user =(FormsIdentity)HttpContext.Current.User.Identity;
FormsAuthenticationTicket ticket = user.Ticket;
login.Text =您已登录+ ticket.UserData.Split('。')+!
}
}


解决方案

p> < ul class =nav navbar-nav navbar-right>
<%if(HttpContext.Current.User.Identity.IsAuthenticated)
{%>
< li> < asp:LinkBut​​ton ID =Logoutrunat =serverCausesValidation =Falseonclick =Logout_Clickstyle =text-align:right>(logout)< / asp:LinkBut​​ton>< / li> ;
<%}
else
{%>
< li>< asp:LinkBut​​ton ID =loginrunat =serverPostBackUrl =〜/ Login1.aspx>登录< / asp:LinkBut​​ton> < / li>
<%}%>
< / ul>


Here login and logout buttons in master page. In login page is using FormsAuthenticationTicket and HttpCookie, so in master page I want to check the forms authentication and then display logout if is authenticated and hide login. If not authenticated display login and hide logout. How can I do that?

Login:

com.CommandText = "select [id], [username],[password], [type] FROM [users] WHERE [username] =@username AND [password]= @pass";
com.Parameters.AddWithValue("@username", UserName.Text);
 com.Parameters.AddWithValue("@pass", Password.Text);
 //  conn.Open();
 SqlDataReader rd = com.ExecuteReader();

 if (rd.Read())
    {

    var _id = rd["id"].ToString();

    var _fname = rd["username"].ToString();

    FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(

           1,
           _id,
           DateTime.Now,
           DateTime.Now.AddMonths(1),
           true,
            "." + _fname,
           FormsAuthentication.FormsCookiePath);
        string hashed_ticket = FormsAuthentication.Encrypt(ticket);
        HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hashed_ticket);

        if (ticket.IsPersistent) cookie.Expires = ticket.Expiration;

        Response.Cookies.Add(cookie);

            Response.Redirect("UserProfile.aspx");

       }
    else
    {
        ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Invalid Username and Password')</script>");
    }
}

Master page HTML:

<ul class="nav navbar-nav navbar-right">
<li><asp:LinkButton ID="login" runat="server"
PostBackUrl="~/Login1.aspx">Login</asp:LinkButton> </li>
<li> <asp:LinkButton ID="Logout" runat="server" CausesValidation="False" onclick="Logout_Click" style="text-align: right">(logout)</asp:LinkButton></li>
</ul>

Code behind Master Page:

if (!HttpContext.Current.User.Identity.IsAuthenticated)
    {
        Logout.Visible = false;


    }
    else
    {
        Logout.Visible = true;
        if (Request.Cookies[FormsAuthentication.FormsCookiePath] != null)
        {
        FormsIdentity user = (FormsIdentity)HttpContext.Current.User.Identity;
        FormsAuthenticationTicket ticket = user.Ticket;
        login.Text = "You are logged-in  " + ticket.UserData.Split('.')+ "!";
        }
    }

解决方案

<ul class="nav navbar-nav navbar-right">
<%if(HttpContext.Current.User.Identity.IsAuthenticated)
{%>
    <li> <asp:LinkButton ID="Logout" runat="server" CausesValidation="False" onclick="Logout_Click" style="text-align: right">(logout)</asp:LinkButton></li>
<%}
else
{%>
    <li><asp:LinkButton ID="login" runat="server" PostBackUrl="~/Login1.aspx">Login</asp:LinkButton> </li>
<%}%>
</ul>

这篇关于登录和注销母版页的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆