{"id":807,"date":"2011-05-25T16:34:44","date_gmt":"2011-05-25T20:34:44","guid":{"rendered":"http:\/\/www.iowawebnet.com\/ein\/?p=807"},"modified":"2011-07-01T12:42:14","modified_gmt":"2011-07-01T16:42:14","slug":"asp-net-login-page-with-sql-backend","status":"publish","type":"post","link":"https:\/\/www.iowawebnet.com\/ein\/2011\/05\/asp-net-login-page-with-sql-backend\/","title":{"rendered":"ASP.NET Login Page with SQL Backend"},"content":{"rendered":"<p><strong>Let&#8217;s start simple by creating form controls:<\/strong><\/p>\n<blockquote><p><a rel=\"attachment wp-att-824\" href=\"http:\/\/www.iowawebnet.com\/ein\/?attachment_id=824\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-824\" title=\"ScreenShot020\" src=\"http:\/\/www.iowawebnet.com\/ein\/wp-content\/uploads\/2011\/05\/ScreenShot020.gif\" alt=\"\" width=\"311\" height=\"145\" srcset=\"https:\/\/www.iowawebnet.com\/ein\/wp-content\/uploads\/2011\/05\/ScreenShot020.gif 311w, https:\/\/www.iowawebnet.com\/ein\/wp-content\/uploads\/2011\/05\/ScreenShot020-300x139.gif 300w\" sizes=\"(max-width: 311px) 100vw, 311px\" \/><\/a>&lt;table&gt;<br \/>\n&lt;tr&gt;&lt;td&gt;Usernname&lt;\/td&gt;&lt;td&gt;&lt;asp:TextBox ID=&#8221;user&#8221; runat=&#8221;server&#8221;&gt;&lt;\/asp:TextBox&gt;&lt;\/td&gt;&lt;\/tr&gt;<br \/>\n&lt;tr&gt;&lt;td&gt;Password&lt;\/td&gt;&lt;td&gt;&lt;asp:TextBox ID=&#8221;password&#8221; runat=&#8221;server&#8221; TextMode=&#8221;Password&#8221;&gt;&lt;\/asp:TextBox&gt;&lt;\/td&gt;&lt;\/tr&gt;<br \/>\n&lt;tr&gt;&lt;td&gt;&lt;\/td&gt;&lt;td&gt;&lt;asp:Button ID=&#8221;Button1&#8243; OnClick=&#8221;submit&#8221; Text=&#8221;Login&#8221; runat=&#8221;server&#8221; causesValidation=&#8221;true&#8221; \/&gt;&lt;\/td&gt;&lt;\/tr&gt;<br \/>\n&lt;\/table&gt;<\/p><\/blockquote>\n<p><strong>Now add some form validation:<\/strong><\/p>\n<blockquote><p><a rel=\"attachment wp-att-827\" href=\"http:\/\/www.iowawebnet.com\/ein\/?attachment_id=827\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-827\" title=\"ScreenShot029\" src=\"http:\/\/www.iowawebnet.com\/ein\/wp-content\/uploads\/2011\/05\/ScreenShot029.gif\" alt=\"\" width=\"405\" height=\"120\" srcset=\"https:\/\/www.iowawebnet.com\/ein\/wp-content\/uploads\/2011\/05\/ScreenShot029.gif 405w, https:\/\/www.iowawebnet.com\/ein\/wp-content\/uploads\/2011\/05\/ScreenShot029-300x88.gif 300w\" sizes=\"(max-width: 405px) 100vw, 405px\" \/><\/a><\/p>\n<p>&lt;table&gt;<br \/>\n&lt;tr&gt;&lt;td&gt;Usernname&lt;\/td&gt;&lt;td&gt;&lt;asp:TextBox ID=&#8221;user&#8221; runat=&#8221;server&#8221;&gt;&lt;\/asp:TextBox&gt;<br \/>\n<span style=\"color: #99ccff;\">&lt;asp:RequiredFieldValidator<\/span><br \/>\n<span style=\"color: #99ccff;\"> ID=&#8221;RequiredFieldValidator1&#8243;<\/span><br \/>\n<span style=\"color: #99ccff;\"> runat=&#8221;server&#8221;<\/span><br \/>\n<span style=\"color: #99ccff;\"> ControlToValidate=&#8221;user&#8221;<\/span><br \/>\n<span style=\"color: #99ccff;\"> ValidationGroup=&#8221;UserCheck&#8221;<\/span><br \/>\n<span style=\"color: #99ccff;\"> ErrorMessage=&#8221; &lt;font color=&#8217;red&#8217;&gt; &amp;laquo; Username is required!&lt;\/font&gt; &#8220;&gt;<\/span><br \/>\n<span style=\"color: #99ccff;\"> &lt;\/asp:RequiredFieldValidator&gt;<\/span><br \/>\n&lt;\/td&gt;&lt;\/tr&gt;<br \/>\n&lt;tr&gt;&lt;td&gt;Password&lt;\/td&gt;&lt;td&gt;&lt;asp:TextBox ID=&#8221;password&#8221; runat=&#8221;server&#8221; TextMode=&#8221;Password&#8221;&gt;&lt;\/asp:TextBox&gt;<br \/>\n<span style=\"color: #99ccff;\">&lt;asp:RequiredFieldValidator<\/span><br \/>\n<span style=\"color: #99ccff;\"> ID=&#8221;RequiredFieldValidator2&#8243;<\/span><br \/>\n<span style=\"color: #99ccff;\"> runat=&#8221;server&#8221;<\/span><br \/>\n<span style=\"color: #99ccff;\"> ControlToValidate=&#8221;password&#8221;<\/span><br \/>\n<span style=\"color: #99ccff;\"> ValidationGroup=&#8221;UserCheck&#8221;<\/span><br \/>\n<span style=\"color: #99ccff;\"> ErrorMessage=&#8221; &lt;font color=&#8217;red&#8217;&gt; &amp;laquo; Username is required!&lt;\/font&gt; &#8220;&gt;<\/span><br \/>\n<span style=\"color: #99ccff;\"> &lt;\/asp:RequiredFieldValidator&gt;<\/span><br \/>\n&lt;\/td&gt;&lt;\/tr&gt;<br \/>\n&lt;tr&gt;&lt;td&gt;&lt;\/td&gt;&lt;td&gt;&lt;asp:Button ID=&#8221;Button1&#8243; OnClick=&#8221;submit&#8221; Text=&#8221;Login&#8221; runat=&#8221;server&#8221;<br \/>\ncausesValidation=&#8221;true&#8221; ValidationGroup=&#8221;UserCheck&#8221; \/&gt;&lt;\/td&gt;&lt;\/tr&gt;<br \/>\n&lt;\/table&gt;<\/p><\/blockquote>\n<p><strong>Here we add some encryption:<\/strong><\/p>\n<blockquote><p>Dim sha1Obj As New System.Security.Cryptography.SHA1CryptoServiceProvider<br \/>\nDim bytesToHash() As Byte = System.Text.Encoding.ASCII.GetBytes(pwd)<br \/>\nbytesToHash = sha1Obj.ComputeHash(bytesToHash)<\/p><\/blockquote>\n<p><strong>And that should be it &#8211; one page login script with SQL backend:<\/strong><\/p>\n<blockquote><p><a rel=\"attachment wp-att-828\" href=\"http:\/\/www.iowawebnet.com\/ein\/?attachment_id=828\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-828\" title=\"ScreenShot030\" src=\"http:\/\/www.iowawebnet.com\/ein\/wp-content\/uploads\/2011\/05\/ScreenShot030.gif\" alt=\"\" width=\"287\" height=\"193\" \/><\/a><strong>Default.aspx<\/strong><br \/>\n&lt;%@ Page Title=&#8221;Home Page&#8221; Language=&#8221;vb&#8221; MasterPageFile=&#8221;~\/Site960.Master&#8221; AutoEventWireup=&#8221;false&#8221; CodeBehind=&#8221;Default.aspx.vb&#8221;\u00a0 %&gt;<br \/>\n&lt;asp:Content ID=&#8221;HeaderContent&#8221; runat=&#8221;server&#8221; ContentPlaceHolderID=&#8221;HeadContent&#8221;&gt;<br \/>\n&lt;script runat=&#8221;server&#8221;&gt;<br \/>\nSub submit(sender As Object, e As EventArgs)<\/p>\n<p>Session(&#8220;user&#8221;) = user.Text()<br \/>\nSession(&#8220;password&#8221;) = password.Text()<\/p>\n<p>Dim sid As String<br \/>\nDim pwd As String<\/p>\n<p>sid = user.Text.ToString()<br \/>\npwd = password.Text.ToString()<\/p>\n<p>Dim sha1Obj As New System.Security.Cryptography.SHA1CryptoServiceProvider<br \/>\nDim bytesToHash() As Byte = System.Text.Encoding.ASCII.GetBytes(pwd)<br \/>\nbytesToHash = sha1Obj.ComputeHash(bytesToHash)<\/p>\n<p>sid = Session(&#8220;user&#8221;)<br \/>\nIf sid &lt;&gt; &#8220;&#8221; Then<br \/>\nDim keyCode As String = &#8220;&#8221;<br \/>\nFor Each b As Byte In bytesToHash<br \/>\nkeyCode += b.ToString(&#8220;x2&#8221;)<br \/>\nNext<\/p>\n<p>Dim ConnDB As New Data.OleDb.OleDbConnection(&#8220;Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=intranet;Persist Security Info=True;User ID=myUserID;Password=MyPwd;&#8221;) &#8216;\/ create connection<br \/>\nDim cmd As New Data.OleDb.OleDbCommand(&#8220;SELECT * FROM User_Tbl WHERE (username = &#8216;&#8221; &amp; user.Text.ToString() &amp; &#8220;&#8216;) AND (password = &#8216;&#8221; &amp; keyCode &amp; &#8220;&#8216;);&#8221;, ConnDB)\u00a0\u00a0\u00a0 &#8216;\/ query recordset<br \/>\nDim reader As Data.OleDb.OleDbDataReader\u00a0 &#8216;\/ define reader<\/p>\n<p>Try<\/p>\n<p>cmd.Connection.Open()\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8216;\/ open connection<br \/>\nreader = cmd.ExecuteReader()\u00a0 &#8216;\/ execute reader<\/p>\n<p>If reader.Read() Then<br \/>\nSession(&#8220;Name&#8221;) = reader(1).ToString()\u00a0 &#8216;\/ write user name session<br \/>\nLabel1.Text = (&#8220;&lt;img src=&#8217;images\/checkMark.png&#8217;&gt; &lt;font color=&#8217;green&#8217;&gt;Login successful &#8221; &amp; reader(1).ToString &amp; &#8220;!&lt;\/font&gt;&lt;p&gt;&lt;a href=&#8217;SecurePage.aspx?tsr=&#8221; &amp; user.Text() &amp; &#8220;&amp;dt=&#8221; &amp; DateTime.Now.ToShortDateString() &amp; &#8220;&#8216;&gt;Continue &amp;raquo;&lt;\/a&gt;&lt;\/p&gt;&#8221;)<br \/>\n&#8216;\/ label1 &#8211; acknowledge user, username valid, access granted<br \/>\nElse<br \/>\nLabel1.Text = (&#8220;&lt;font color=&#8217;red&#8217;&gt;Login failed!&lt;\/font&gt;&lt;br \/&gt;Try again, if problem persists submit case to Help Desk!&#8221;)<br \/>\n&#8216;\/ label1 &#8211; unknown username, decline access<br \/>\nEnd If<\/p>\n<p>cmd.Connection.Close()\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8216;\/ close connection<\/p>\n<p>Catch ex As Exception\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8216;\/ in case of exception<br \/>\nLabel1.Text = &#8220;ERROR: &#8221; &amp; ex.Message.ToString()\u00a0 &#8216;\/ get an error message, just in case<br \/>\nEnd Try<\/p>\n<p>End If<\/p>\n<p>End Sub<br \/>\n&lt;\/script&gt;<br \/>\n&lt;\/asp:Content&gt;<br \/>\n&lt;asp:Content ID=&#8221;BodyContent&#8221; runat=&#8221;server&#8221; ContentPlaceHolderID=&#8221;MainContent&#8221;&gt;<br \/>\n&lt;div&gt;<br \/>\n&lt;h1&gt;Insurance Form Look up&lt;\/h1&gt;<br \/>\n&lt;%<br \/>\nDim job As String<br \/>\njob = Request.QueryString(&#8220;do&#8221;)<\/p>\n<p>If job = &#8220;&#8221; Then<br \/>\n%&gt;<br \/>\n&lt;p&gt;In order to access your record(s) you must login. To login select login profile on the left side navigaiton menu.&lt;\/p&gt;<br \/>\n&lt;%<br \/>\nEnd If<br \/>\nIf job = &#8220;admlog&#8221; Then<br \/>\n%&gt;<br \/>\n&lt;p&gt;<br \/>\n&lt;table&gt;<br \/>\n&lt;tr&gt;&lt;td&gt;Usernname&lt;\/td&gt;&lt;td&gt;&lt;asp:TextBox ID=&#8221;user&#8221; runat=&#8221;server&#8221;&gt;&lt;\/asp:TextBox&gt;<br \/>\n&lt;asp:RequiredFieldValidator<br \/>\nID=&#8221;RequiredFieldValidator1&#8243;<br \/>\nrunat=&#8221;server&#8221;<br \/>\nControlToValidate=&#8221;user&#8221;<br \/>\nValidationGroup=&#8221;UserCheck&#8221;<br \/>\nErrorMessage=&#8221; &lt;font color=&#8217;red&#8217;&gt; &amp;laquo; Username is required!&lt;\/font&gt; &#8220;&gt;<br \/>\n&lt;\/asp:RequiredFieldValidator&gt;<br \/>\n&lt;\/td&gt;&lt;\/tr&gt;<br \/>\n&lt;tr&gt;&lt;td&gt;Password&lt;\/td&gt;&lt;td&gt;&lt;asp:TextBox ID=&#8221;password&#8221; runat=&#8221;server&#8221; TextMode=&#8221;Password&#8221;&gt;&lt;\/asp:TextBox&gt;<br \/>\n&lt;asp:RequiredFieldValidator<br \/>\nID=&#8221;RequiredFieldValidator2&#8243;<br \/>\nrunat=&#8221;server&#8221;<br \/>\nControlToValidate=&#8221;password&#8221;<br \/>\nValidationGroup=&#8221;UserCheck&#8221;<br \/>\nErrorMessage=&#8221; &lt;font color=&#8217;red&#8217;&gt; &amp;laquo; Username is required!&lt;\/font&gt; &#8220;&gt;<br \/>\n&lt;\/asp:RequiredFieldValidator&gt;<br \/>\n&lt;\/td&gt;&lt;\/tr&gt;<br \/>\n&lt;tr&gt;&lt;td&gt;&lt;\/td&gt;&lt;td&gt;&lt;asp:Button ID=&#8221;Button1&#8243; OnClick=&#8221;submit&#8221; Text=&#8221;Login&#8221; runat=&#8221;server&#8221;<br \/>\ncausesValidation=&#8221;true&#8221; ValidationGroup=&#8221;UserCheck&#8221; \/&gt;&lt;\/td&gt;&lt;\/tr&gt;<br \/>\n&lt;\/table&gt;<br \/>\n&lt;\/p&gt;<br \/>\n&lt;%<br \/>\nEnd If<br \/>\n%&gt;<br \/>\n&lt;p&gt;<br \/>\n&lt;asp:Label id=&#8221;Label1&#8243; runat=&#8221;server&#8221;&gt;&lt;\/asp:Label&gt;<br \/>\n&lt;\/p&gt;<\/p>\n<p>&lt;%<br \/>\n&#8216;Dim job As String<br \/>\njob = Request.QueryString(&#8220;do&#8221;)<br \/>\nIf job = &#8220;logout&#8221; Then<\/p>\n<p>Session.Abandon()<\/p>\n<p>Response.Write(&#8220;&lt;img src=&#8217;images\/checkMark.png&#8217;&gt; &amp;raquo; &lt;font color=&#8217;green&#8217;&gt;Sesion closed!&lt;\/font&gt;&#8221;)<br \/>\nEnd If<\/p>\n<p>%&gt;<br \/>\n&lt;\/div&gt;<\/p>\n<p>&lt;\/asp:Content&gt;<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Let&#8217;s start simple by creating form controls: &lt;table&gt; &lt;tr&gt;&lt;td&gt;Usernname&lt;\/td&gt;&lt;td&gt;&lt;asp:TextBox ID=&#8221;user&#8221; runat=&#8221;server&#8221;&gt;&lt;\/asp:TextBox&gt;&lt;\/td&gt;&lt;\/tr&gt; &lt;tr&gt;&lt;td&gt;Password&lt;\/td&gt;&lt;td&gt;&lt;asp:TextBox ID=&#8221;password&#8221; runat=&#8221;server&#8221; TextMode=&#8221;Password&#8221;&gt;&lt;\/asp:TextBox&gt;&lt;\/td&gt;&lt;\/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;\/td&gt;&lt;td&gt;&lt;asp:Button ID=&#8221;Button1&#8243; OnClick=&#8221;submit&#8221; Text=&#8221;Login&#8221; runat=&#8221;server&#8221; causesValidation=&#8221;true&#8221; \/&gt;&lt;\/td&gt;&lt;\/tr&gt; &lt;\/table&gt; Now add some form validation: &lt;table&gt; &lt;tr&gt;&lt;td&gt;Usernname&lt;\/td&gt;&lt;td&gt;&lt;asp:TextBox ID=&#8221;user&#8221; runat=&#8221;server&#8221;&gt;&lt;\/asp:TextBox&gt; &lt;asp:RequiredFieldValidator ID=&#8221;RequiredFieldValidator1&#8243; runat=&#8221;server&#8221; ControlToValidate=&#8221;user&#8221; ValidationGroup=&#8221;UserCheck&#8221; ErrorMessage=&#8221; &lt;font color=&#8217;red&#8217;&gt; &amp;laquo; Username is required!&lt;\/font&gt; &#8220;&gt; &lt;\/asp:RequiredFieldValidator&gt; &lt;\/td&gt;&lt;\/tr&gt; &lt;tr&gt;&lt;td&gt;Password&lt;\/td&gt;&lt;td&gt;&lt;asp:TextBox ID=&#8221;password&#8221; runat=&#8221;server&#8221; TextMode=&#8221;Password&#8221;&gt;&lt;\/asp:TextBox&gt; &lt;asp:RequiredFieldValidator ID=&#8221;RequiredFieldValidator2&#8243; runat=&#8221;server&#8221; ControlToValidate=&#8221;password&#8221; [&hellip;]<\/p>\n","protected":false},"author":35,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17,33,29,32],"tags":[19,31,20,22,21],"class_list":["post-807","post","type-post","status-publish","format-standard","hentry","category-applications","category-classic-asp","category-encryption","category-ms-sql","tag-asp-net","tag-encryption-2","tag-login","tag-programming","tag-visual-studio"],"_links":{"self":[{"href":"https:\/\/www.iowawebnet.com\/ein\/wp-json\/wp\/v2\/posts\/807"}],"collection":[{"href":"https:\/\/www.iowawebnet.com\/ein\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.iowawebnet.com\/ein\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.iowawebnet.com\/ein\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.iowawebnet.com\/ein\/wp-json\/wp\/v2\/comments?post=807"}],"version-history":[{"count":15,"href":"https:\/\/www.iowawebnet.com\/ein\/wp-json\/wp\/v2\/posts\/807\/revisions"}],"predecessor-version":[{"id":970,"href":"https:\/\/www.iowawebnet.com\/ein\/wp-json\/wp\/v2\/posts\/807\/revisions\/970"}],"wp:attachment":[{"href":"https:\/\/www.iowawebnet.com\/ein\/wp-json\/wp\/v2\/media?parent=807"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.iowawebnet.com\/ein\/wp-json\/wp\/v2\/categories?post=807"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.iowawebnet.com\/ein\/wp-json\/wp\/v2\/tags?post=807"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}