| | |
Simple ASP.Net Login Page using C#
Please support our C# advertiser: Intel Parallel Studio Home
![]() |
Simple ASP.NET Login Page using C# (ASP.NET 1.0 & 1.1 ONLY!!! NOT 2.0)
This is just a small demonstration to show how easy one can "port" the code from my previous tutorials ( Updated: Simple ASP.Net Login Page & ASP.Net Login Page with SQL & ASP.Net Registration Page) over to another programming language in the .NET environment. In this example I chose to use C#.
So for all considerations this tutorial is an exact duplicate of the Updated: Simple ASP.NET Login Page using VB.NET that I did previously, but using SQL instead of Access for the DB
1. Create a Login Webform (HTML/ASP.NET)
- Include any control validation you feel necessary.
NorthCSharp.aspx
2. Create the Code Behind (C#)
- One thing to note here, you use the keyword using instead of import to "import/include" the namespaces you require for security, data access, etc.
- Also note how clean and short the code structure is when comparing VB.Net to C#. Now in my opinion, I love VB.Net far more than C# or C++, as I find it more intuitive, but each to his own.
NorthCSharp.aspx.cs
3. Add the following line to the Web.Config file to enable DB access
- Notice that this is no different than the one used in the VB.Net Example
- I have removed my login info from the strConn, don't forget to add yours in place!
Web.Config
Happy Coding!
This is just a small demonstration to show how easy one can "port" the code from my previous tutorials ( Updated: Simple ASP.Net Login Page & ASP.Net Login Page with SQL & ASP.Net Registration Page) over to another programming language in the .NET environment. In this example I chose to use C#.
So for all considerations this tutorial is an exact duplicate of the Updated: Simple ASP.NET Login Page using VB.NET that I did previously, but using SQL instead of Access for the DB
1. Create a Login Webform (HTML/ASP.NET)
- Include any control validation you feel necessary.
NorthCSharp.aspx
<%@ Page language="c#" Codebehind="Login.aspx.cs" AutoEventWireup="false" Inherits="NorthCSharp.WebForm1" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <html> <head> <title>WebForm1</title> <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1"> <meta name="CODE_LANGUAGE" content="C#"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> <!-- <summary> ||||| Style Sheet ||||| </summary> --><link title="standard" href="Styles.css" type="text/css" rel="stylesheet"> </head> <body> <!-- ||||| Login Form ||||| --> <form id="frmlogin" method="post" runat="server"> <table id="mainTable" border="0"> <tr> <td> <table class="t_border" id="loginTable" cellspacing="15" cellpadding="0"> <tr> <td><b>Login: </b> </td> <td><asp:textbox id="txtUserName" runat="server" width="160px"></asp:textbox><asp:requiredfieldvalidator id="rvUserValidator" runat="server" controltovalidate="txtUserName" errormessage="You must supply a Username!" display="None"></asp:requiredfieldvalidator></td> </tr> <tr> <td><b>Password: </b> </td> <td><asp:textbox id="txtPassword" runat="server" width="160px" textmode="Password"></asp:textbox><asp:requiredfieldvalidator id="rvPasswordValidator" runat="server" controltovalidate="txtPassword" errormessage="Empty Passwords not accepted" display="None"></asp:requiredfieldvalidator></td> </tr> <tr> <td align="center" colspan="2"><asp:button id="cmdSubmit" runat="server" text="Submit" borderstyle="Solid"></asp:button></td> </tr> </table> </td> </tr> <tr> <td> <table id="messageDisplay"> <tr> <td><asp:validationsummary id="Validationsummary1" runat="server" width="472px" displaymode="BulletList"></asp:validationsummary></td> </tr> </table> <!--<asp:hyperlink id="hl_Register" runat="server" navigateurl="Register.aspx" font-size="X-Small" height="8px" width="209px" font-names="MS Reference Sans Serif">New User?...Register Here!</asp:hyperlink>--> </td> </tr> </table> </form> <asp:label id="lblMessage" runat="server" width="288px" font-bold="True" font-italic="True" font-size="Medium" forecolor="#C00000"></asp:label> <asp:label id="lblMessage2" runat="server" width="288px" font-bold="True" font-italic="True" font-size="Medium" forecolor="#C00000"></asp:label> <!-- ||||| End of Form ||||| --> </body> </html>
2. Create the Code Behind (C#)
- One thing to note here, you use the keyword using instead of import to "import/include" the namespaces you require for security, data access, etc.
- Also note how clean and short the code structure is when comparing VB.Net to C#. Now in my opinion, I love VB.Net far more than C# or C++, as I find it more intuitive, but each to his own.
NorthCSharp.aspx.cs
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; // <summmary> // What has been added for Login Page // for this application to function // </summary> using System.Web.Security; using System.Data.SqlClient; using System.Configuration; namespace NorthCSharp { /// <summary> /// Summary description for WebForm1. /// </summary> public class WebForm1 : System.Web.UI.Page { protected System.Web.UI.WebControls.TextBox txtUserName; protected System.Web.UI.WebControls.RequiredFieldValidator rvUserValidator; protected System.Web.UI.WebControls.TextBox txtPassword; protected System.Web.UI.WebControls.RequiredFieldValidator rvPasswordValidator; protected System.Web.UI.WebControls.Button cmdSubmit; protected System.Web.UI.WebControls.ValidationSummary Validationsummary1; protected System.Web.UI.WebControls.Label lblMessage; protected System.Web.UI.WebControls.Label lblMessage2; private void Page_Load(object sender, System.EventArgs e) { // Put user code to initialize the page here } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // InitializeComponent(); base.OnInit(e); } /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.cmdSubmit.Click += new System.EventHandler(this.cmdSubmit_Click); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void cmdSubmit_Click(object sender, System.EventArgs e) { if (Page.IsValid) { if (DBConnection(txtUserName.Text.Trim(), txtPassword.Text.Trim())) { FormsAuthentication.RedirectFromLoginPage (txtUserName.Text, false); } else { lblMessage.Text = "Invalid Login, please try again!"; } } } private bool DBConnection(string txtUser, string txtPass) { SqlConnection myConn = new SqlConnection(ConfigurationSettings.AppSettings["strConn"]); SqlCommand myCmd = new SqlCommand("sp_ValidateUser", myConn); myCmd.CommandType = CommandType.StoredProcedure; SqlParameter objParam1; SqlParameter objParam2; SqlParameter returnParam; objParam1 = myCmd.Parameters.Add ("@UserName", SqlDbType.VarChar); objParam2 = myCmd.Parameters.Add ("@Password", SqlDbType.VarChar); returnParam = myCmd.Parameters.Add ("@Num_of_User", SqlDbType.Int); objParam1.Direction = ParameterDirection.Input; objParam2.Direction = ParameterDirection.Input; returnParam.Direction = ParameterDirection.ReturnValue; objParam1.Value = txtUser; objParam2.Value = txtPass; try { if (myConn.State.Equals(ConnectionState.Closed)) { myConn.Open(); myCmd.ExecuteNonQuery(); } if ((int)returnParam.Value < 1) { lblMessage.Text = "Invalid Login!"; return false; } else { myConn.Close(); return true; } } catch (Exception ex) { lblMessage2.Text = ex + "Error Connecting to the database"; return false; } } } }
3. Add the following line to the Web.Config file to enable DB access
- Notice that this is no different than the one used in the VB.Net Example
- I have removed my login info from the strConn, don't forget to add yours in place!
Web.Config
] <?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="strConn" value="Network Library=DBMSSOCN;Data Source=192.168.0.100,1433;database=Northwind;User id=;Password=;"/> </appSettings> <system.web> <!-- DYNAMIC DEBUG COMPILATION ... ... ...
Last edited by Paladine; Oct 31st, 2006 at 3:08 am.
•
•
Join Date: Jul 2005
Posts: 8
Reputation:
Solved Threads: 0
Hi Paladine,
I have to modify the c# code from the SQL server example to work for AccessDB
but it's doesn't work. Please see my code as below;
Could you please advise if you have any idea?
Thank you very much,
BeeNarak
I have to modify the c# code from the SQL server example to work for AccessDB
but it's doesn't work. Please see my code as below;
C# Syntax (Toggle Plain Text)
private bool DBConnection(string strUserName, string strPassword) { OleDbConnection MyConn = new OleDbConnection(ConfigurationSettings.AppSettings["strConn"]); OleDbCommand MyCmd = new OleDbCommand("sp_ValidateUser", MyConn); MyCmd.CommandType = CommandType.StoredProcedure; OleDbParameter objParam1, objParam2; objParam1 = MyCmd.Parameters.Add("@UserName", OleDbType.Char); objParam2 = MyCmd.Parameters.Add("@Password", OleDbType.Char); //returnParam = MyCmd.Parameters.Add ("@Num_of_User", OleDbType.Integer); objParam1.Direction = ParameterDirection.Input; objParam2.Direction = ParameterDirection.Input; //returnParam.Direction = ParameterDirection.ReturnValue; objParam1.Value = txtUserName.Text; objParam2.Value = txtPassword.Text; try { if(MyConn.State == ConnectionState.Closed) { MyConn.Open(); } OleDbDataReader objReader; objReader = MyCmd.ExecuteReader(CommandBehavior.CloseConnection); while(objReader.Read()) { if ((string)objReader.GetValue(0) != "1") { lblMessage.Text = "Invalid Login!"; //return false; } else { objReader.Close(); return true; } } } catch(Exception ex) { lblMessage2.Text = "Error Connecting to the database!"; //return false; } }
Could you please advise if you have any idea?
Thank you very much,
BeeNarak
I will try my best to help.
Ok What error are you getting? Saying it doesn't work provides me no indication as to what the problem is.
Why are you converting an int value to a string and comparing it to a string int?
code in question:
Should be
I also may need to see what your stored procedure code looks like.
Ok What error are you getting? Saying it doesn't work provides me no indication as to what the problem is.
Why are you converting an int value to a string and comparing it to a string int?
code in question:
C# Syntax (Toggle Plain Text)
(string)objReader.GetValue(0) != "1"
Should be
C# Syntax (Toggle Plain Text)
objReader.GetValue(0) = 0
I also may need to see what your stored procedure code looks like.
•
•
Join Date: Jul 2005
Posts: 8
Reputation:
Solved Threads: 0
Hi Paladine,
Thank you so much for your explanations.
Why are you converting an int value to a string and comparing it to a string int?
- Sorry i'm poor experience about c# programing so some time i've got a mistake. :s
I am just learning ASP.NET and I am trying to build an ASP.Net login page. Before that i've got an error '('Login.WebForm1.DBConnection(string, string)' and than i try to chage '(string)objReader.GetValue(0) != "1"' to 'objReader.GetValue(0) = 0' error is 'Cannot implicitly convert type 'object' to 'bool' and 'The left-hand side of an assignment must be a variable, property or indexer'
Do you have any idea?
my code as below;
Thank you so much for your explanations.
Why are you converting an int value to a string and comparing it to a string int?
- Sorry i'm poor experience about c# programing so some time i've got a mistake. :s
I am just learning ASP.NET and I am trying to build an ASP.Net login page. Before that i've got an error '('Login.WebForm1.DBConnection(string, string)' and than i try to chage '(string)objReader.GetValue(0) != "1"' to 'objReader.GetValue(0) = 0' error is 'Cannot implicitly convert type 'object' to 'bool' and 'The left-hand side of an assignment must be a variable, property or indexer'
Do you have any idea?
my code as below;
C# Syntax (Toggle Plain Text)
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Web.Security; using System.Data.OleDb; using System.Configuration; namespace Login { /// <summary> /// Summary description for WebForm1. /// </summary> public class WebForm1 : System.Web.UI.Page { protected System.Web.UI.WebControls.TextBox txtUserName; protected System.Web.UI.WebControls.RequiredFieldValidator rvUserValidator; protected System.Web.UI.WebControls.TextBox txtPassword; protected System.Web.UI.WebControls.RequiredFieldValidator rvPasswordValidator; protected System.Web.UI.WebControls.Button cmdSubmit; protected System.Web.UI.WebControls.ValidationSummary Validationsummary1; protected System.Web.UI.WebControls.Label lblMessage2; protected System.Web.UI.WebControls.Label lblMessage; //protected System.Web.UI.Page.Session; private void Page_Load(object sender, System.EventArgs e) { // Put user code to initialize the page here } private bool DBConnection(string strUserName, string strPassword) { string LoginSQL; OleDbConnection MyConn = new OleDbConnection(ConfigurationSettings.AppSettings["strConn"]); OleDbCommand MyCmd = new OleDbCommand("sp_ValidateUser", MyConn); MyCmd.CommandType = CommandType.StoredProcedure; OleDbParameter objParam1, objParam2; objParam1 = MyCmd.Parameters.Add("@UserName", OleDbType.Char); objParam2 = MyCmd.Parameters.Add("@Password", OleDbType.Char); //returnParam = MyCmd.Parameters.Add ("@Num_of_User", OleDbType.Integer); objParam1.Direction = ParameterDirection.Input; objParam2.Direction = ParameterDirection.Input; //returnParam.Direction = ParameterDirection.ReturnValue; objParam1.Value = txtUserName.Text; objParam2.Value = txtPassword.Text; try { if(MyConn.State == ConnectionState.Closed) { MyConn.Open(); } OleDbDataReader objReader; objReader = MyCmd.ExecuteReader(CommandBehavior.CloseConnection); while(objReader.Read()) { if (objReader.GetValue(0) = 0) { lblMessage.Text = "Invalid Login!"; //return false; } else { objReader.Close(); return true; } } } catch(Exception ex) { lblMessage2.Text = "Error Connecting to the database!"; //return false; } } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // InitializeComponent(); base.OnInit(e); } /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.cmdSubmit.Click += new System.EventHandler(this.cmdSubmit_Click); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void cmdSubmit_Click(object sender, System.EventArgs e) { if(Page.IsValid) //Meaning the Control Validation was successful! { //Connect to Database for User Validation //int intMaxLoginAttempts = ((Int32)Session["Num_of_Tries"]); if(DBConnection(txtUserName.Text.Trim(), txtPassword.Text.Trim())) { //if(Session["Logged_IN"].Equals("Yes")) //Use to Validate on other pages in the application //{ //Session["Logged_IN"].Equals("Yes"); FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, false); //default.aspx Page! //Response.Redirect("default.aspx"); //Response.Redirect("../Login.aspx?ReturnUrl=/default.aspx"); //} //lblMessage.Text = "Success Full"; } else { //Credentials are Invalid lblMessage.Text = "Sorry! Your login or password is incorrect. \n\n Please log in again."; //Session["LoginCount"] = ((Int32)Session["LoginCount"]) + 1; //Response.Redirect ("default.aspx"); } /*if(Session["LoginCount"].Equals(intMaxLoginAttempts)) { Response.Redirect("Denied.aspx"); } if(((Int32)Session["Num_of_Tries"]) > 2) { Response.Redirect("Denied.aspx"); }*/ } } } }
Last edited by Paladine; Jul 14th, 2005 at 3:06 am. Reason: Adding code blocks
No worries...
It should be (and please review the code you copied from - i.e the tutorial)
It should be (and please review the code you copied from - i.e the tutorial)
C# Syntax (Toggle Plain Text)
(int)objReader.GetValue(0) = 0
•
•
Join Date: Jul 2005
Posts: 8
Reputation:
Solved Threads: 0
Hi Paladine,
Thanks for your explanations. I've to change as your idea from "(objReader.GetValue(0) = 0)" to "(int)objReader.GetValue(0) = 0" as your idea it's still got error '(Login.WebForm1.DBConnection(string, string)'.
I just tried your vb.net code it's work! and then i was convert vb.net to c# code it's still have got error as above. What's wrong?
regards,
Bee
Thanks for your explanations. I've to change as your idea from "(objReader.GetValue(0) = 0)" to "(int)objReader.GetValue(0) = 0" as your idea it's still got error '(Login.WebForm1.DBConnection(string, string)'.
I just tried your vb.net code it's work! and then i was convert vb.net to c# code it's still have got error as above. What's wrong?
regards,
Bee
yes, but it should be return True if login is Successful, and False if not
i.e. This return False should be un-commented out!!
i.e. This return False should be un-commented out!!
C# Syntax (Toggle Plain Text)
if (objReader.GetValue(0) = 0) { lblMessage.Text = "Invalid Login!"; //return false; }
•
•
Join Date: Jul 2005
Posts: 5
Reputation:
Solved Threads: 0
ive tried using this. ive used it once before with your vb.net and it worked pefectly. im now learning c# and when i go to put this together the web.config keeps throwing this error:
Parser Error Message: The data at the root level is invalid. Line 1, position 1.
Source Error:
Line 1: using System;
Line 2: <?xml version="1.0" encoding="utf-8" ?>
Line 3:
it points to the using system directive. anyone knw what would cause this?
Parser Error Message: The data at the root level is invalid. Line 1, position 1.
Source Error:
Line 1: using System;
Line 2: <?xml version="1.0" encoding="utf-8" ?>
Line 3:
it points to the using system directive. anyone knw what would cause this?
![]() |
Similar Threads
- Updated : Simple ASP.Net Login Page (ASP.NET)
- Simple ASP.Net Login Page (Using VB.Net) (ASP.NET)
Other Threads in the C# Forum
- Previous Thread: C# online resources, help and advice?
- Next Thread: DataGridView with List In Object to Display
| Thread Tools | Search this Thread |
.net access algorithm array asp barchart bitmap box broadcast c# check checkbox client column combobox control conversion csharp custom database databasesearch datagrid datagridview datagridviewcheckbox dataset datetime degrees development display draganddrop drawing encryption enum equation excel file form format formatting formbox forms formupdate function gdi+ image index input install java label linux list listbox mandelbrot math mouseclick mysql namevaluepairs networking operator packaging path photoshop picturebox pixelinversion post powerpacks programming radians regex remoting reporting richtextbox robot server sleep socket sql statistics stream string table text textbox thread time timer transform treeview update usercontrol validation visualstudio wait webbrowser wfa windows winforms wpf xml





