top button
Flag Notify
    Connect to us
      Site Registration

Site Registration

How to implement Remember Me option in login page in ASP.NET?

+1 vote
472 views
How to implement Remember Me option in login page in ASP.NET?
posted Feb 11, 2016 by Sathyasree

Share this question
Facebook Share Button Twitter Share Button LinkedIn Share Button

1 Answer

+1 vote
 
Best answer

You see remember me CheckBox in almost every login page of different websites. This can be implemented easily with the help of cookies. Cookies are small piece of data or information sent from a website and stored in user’s browser and later this information can be retrieved by the website to remember user. Users can disable cookies in their browsers so we have to check if cookies are enabled or not. Cookies are a good way to implement remember me option for login detail.

You can use Login control from Visual Studio Toolbox or you can use your functionality and layout for Login page. Remember me CheckBox is provided with built-in login control in Visual Studio Toolbox. I have used my own functionality and layout instead of Login control. Implementing remember me option for both techniques has no great difference. I will show remember me option with my own added CheckBox contro in Login page. I have already explained about how to create a Login page in my previous article. I am using same SQL Server database table, stored procedure and function in code file for this article as I have used for previous article.

Let’s see how we can implement Remember Me option.

1.Open Visual Studio 2010
2.File > New > Web Site
3.Visual C# or Visual Basic > ASP.NET Empty Web Site > Click Ok
4.Website > Add New Item > Web Form > Click Add (Default.aspx)
5..Website > Add New Item > Web Form > Click Add (Rename as UserPage.aspx
6.Add code below in Default.aspx

<table>
    <tr>
        <td colspan="2" style="text-align: center; height: 21px;">
            <span style="font-size: 24pt">Login</span>
        </td>
    </tr>
    <tr>
        <td style="width: 71px" valign="top">
            <asp:Label ID="lblEmail" runat="server" Text="Email:"></asp:Label></td>
        <td style="width: 178px; text-align: right;" valign="top">
            <asp:TextBox ID="txtEmail" runat="server" ></asp:TextBox></td>
    </tr>
    <tr>
        <td style="width: 71px; height: 26px;">
            <asp:Label ID="lblPassword" runat="server" Text="Password:"></asp:Label></td>
        <td style="width: 178px; height: 26px; text-align: right;">
            <asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox></td>
    </tr>
    <tr>
        <td colspan="2" style="text-align: right">
            <asp:CheckBox ID="ChkRemember" runat="server" Text="Remember Me" /></td>
    </tr>
    <tr>
        <td style="width: 71px; height: 27px;">
        </td>
        <td style="width: 178px; text-align: right; height: 27px;">
             <asp:Button ID="btnLogin" runat="server" Style="position: relative" 
                Text="Login" onclick="btnLogin_Click" /></td>
    </tr>
</table>
<br />
<asp:Label ID="lblMessage" runat="server"></asp:Label>

7.Stored procedure used to verify account

CREATE PROCEDURE dbo.VerifyAccount
       @Email Varchar(100),
       @Password NVarchar(50),
       @Verify BIT OUTPUT

       AS

       BEGIN

       DECLARE @RecordCount INT

       SELECT @RecordCount = Count(*) FROM Account WHERE Email = @Email AND Password = @Password

       IF @RecordCount = 1
       BEGIN
              SET @Verify = 1
       END
       ELSE
       BEGIN
              SET @Verify = 0
       END

       END

8.Open code behind file and include following namespace.

C#

using System.Data;
using System.Data.SqlClient;

VB.NET

Imports System.Data
Imports System.Data.SqlClient

9.Write below function in code behind file to verify user.

C#

public bool VerifyAccount(string email, string password)
{
    bool result;

    string connstring = "Data Source=Local;Initial Catalog=SampleApplicationDatabase;Integrated Security=True";
    SqlConnection conn = new SqlConnection(connstring);

    SqlCommand cmd = new SqlCommand("VerifyAccount", conn);
    cmd.CommandType = CommandType.StoredProcedure;

    cmd.Parameters.Add("@Email", SqlDbType.VarChar, 100).Value = email;
    cmd.Parameters.Add("@Password", SqlDbType.NVarChar, 50).Value = password;

    SqlParameter pVerify = new SqlParameter("@Verify", SqlDbType.Bit);
    pVerify.Direction = ParameterDirection.InputOutput;
    pVerify.Value = DBNull.Value;

    cmd.Parameters.Add(pVerify);

    try
    {
        conn.Open();
        cmd.ExecuteNonQuery();

        if ((bool)pVerify.Value == true)
        {
            result = true;
        }
        else
        {
            result = false;
        }
    }
    catch (Exception ex)
    {
        result = false;
    }
    conn.Close();

    return result;
}

VB.NET

Public Function VerifyAccount(email As String, password As String) As Boolean
    Dim result As Boolean

    Dim connstring As String = "Data Source=Local;Initial Catalog=SampleApplicationDatabase;Integrated Security=True"
    Dim conn As New SqlConnection(connstring)

    Dim cmd As New SqlCommand("VerifyAccount", conn)
    cmd.CommandType = CommandType.StoredProcedure

    cmd.Parameters.Add("@Email", SqlDbType.VarChar, 100).Value = email
    cmd.Parameters.Add("@Password", SqlDbType.NVarChar, 50).Value = password

    Dim pVerify As New SqlParameter("@Verify", SqlDbType.Bit)
    pVerify.Direction = ParameterDirection.InputOutput
    pVerify.Value = DBNull.Value

    cmd.Parameters.Add(pVerify)

    Try
        conn.Open()
        cmd.ExecuteNonQuery()

        If CBool(pVerify.Value) = True Then
            result = True
        Else
            result = False
        End If
    Catch ex As Exception
        result = False
    End Try
    conn.Close()

    Return result
End Function

10.Write code below in Page Load and Button click events to implement Remember me option

C#

protected void Page_Load(object sender, EventArgs e)
{
    if (Request.Cookies["Remember"] != null)
    {
        HttpCookie cookieRemember = Request.Cookies.Get("Remember");
        txtEmail.Text = cookieRemember.Values["Email"];
        txtPassword.Text = cookieRemember.Values["Password"];
        Response.Cookies["Remember"].Expires = DateTime.Now;
    }
}
protected void btnLogin_Click(object sender, EventArgs e)
{
    bool result = VerifyAccount(txtEmail.Text, txtPassword.Text);

    if (result == true)
    {
        if (ChkRemember.Checked)
        {
     HttpCookie cookieRemember = new HttpCookie("Remember");
            cookieRemember.Values.Add("Email", txtEmail.Text);
            cookieRemember.Values.Add("Password", txtPassword.Text);
            cookieRemember.Expires = DateTime.Now.AddDays(10);
            Response.Cookies.Add(cookieRemember);
        }
        Response.Redirect("UserPage.aspx");
    }
    else
    {
        lblMessage.Text = "Sorry you cannot login, please provide correct Email and password";
    }
}

VB.NET

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
   If Request.Cookies("Remember") IsNot Nothing Then
       Dim cookieRemember As HttpCookie = Request.Cookies.Get("Remember")
       txtEmail.Text = cookieRemember.Values("Email")
       txtPassword.Text = cookieRemember.Values("Password")
       Response.Cookies("Remember").Expires = DateTime.Now
   End If
End Sub

Protected Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
    Dim result As Boolean = VerifyAccount(txtEmail.Text, txtPassword.Text)

    If result = True Then
        If ChkRemember.Checked Then
     Dim cookieRemember As New HttpCookie("Remember")
           cookieRemember.Values.Add("Email", txtEmail.Text)
           cookieRemember.Values.Add("Password", txtPassword.Text)
            cookieRemember.Expires = DateTime.Now.AddDays(10)
            Response.Cookies.Add(cookieRemember)
        End If
        Response.Redirect("UserPage.aspx")
    Else
        lblMessage.Text = "Sorry you cannot login, please provide correct Email and password"
    End If
End Sub

In Login Button click event, I have verified user information first and then I have confirmed that the remember me CheckBox is checked. I have created HttpCookie object and added email and password in it. Then I have set 10 days as expire time of the Cookie.
In Page Load event, first I have checked for Cookie existence in the user’s browser. If the specified cookie exists then I have retrieved email and password values.

11.Set Default.aspx as start page and Press F5.

answer Feb 11, 2016 by Shivaranjini
...