Difference between revisions of "Create login for ASP.Net Web App"

From TRCCompSci - AQA Computer Science
Jump to: navigation, search
(Login Page for ASP.Net Web App)
(Login Page for ASP.Net Web App)
Line 34: Line 34:
 
     return LocalRedirect("/login");
 
     return LocalRedirect("/login");
 
}
 
}
 +
</syntaxhighlight>
 +
 +
Now add the code into our new method, make sure it is before the return line:
 +
 +
<syntaxhighlight lang=c#>
 +
connection.Open();
 +
 +
using var Command = new MySqlCommand("SELECT * FROM test where username=@u and password=@p", connection);
 +
Command.Parameters.AddWithValue("@u", Request.Form["user"]);
 +
Command.Parameters.AddWithValue("@p", Request.Form["password"]);
 +
using var reader = Command.ExecuteReader();
 +
</syntaxhighlight>
 +
 +
This code will open the database connection, it then creates a command with the correct sql to retrieve the login details of the user. the `@u` and `@p` are parameters and are replaced by the information from the form. Finally this will execute the command and fill the reader with the retrieved data.
 +
 +
Now, after the `Command.ExecuteReader()` command we need to handle the data returned. Add this code:
 +
<syntaxhighlight lang=c#>
 +
 +
if(reader.HasRows)
 +
{
 +
HttpContext.Session.SetString("_user", Request.Form["user"]);
 +
return LocalRedirect("/Index");
 +
}
 +
connection.Close();
 
</syntaxhighlight>
 
</syntaxhighlight>

Revision as of 13:49, 16 October 2024

Login Page for ASP.Net Web App

Create a new `Razor Page` and call it `login`. In the HTML for the page add the following form to allow the user to enter their username and password:

	<h1 class="display-4">Login</h1>

	<form method="post">
		Username:<input type="Text" name="user">
		Password:<input type="password" name="password">
		<input type="submit">
	</form>

Now go to the `loginModel` section (right click the page and select goto PageModel). Inside the loginModel class add the following to handle the database connection:

		string connection = "server=localhost;user=root;database=test;port=3306;password=usbw;";

		public MySqlConnection GetConnection
		{
			get
			{
				return new MySqlConnection(connection);
			}
		}

Now add a new method to the loginModel class:

public LocalRedirectResult OnPost()
{

    return LocalRedirect("/login");
}

Now add the code into our new method, make sure it is before the return line:

connection.Open();

using var Command = new MySqlCommand("SELECT * FROM test where username=@u and password=@p", connection);
Command.Parameters.AddWithValue("@u", Request.Form["user"]);
Command.Parameters.AddWithValue("@p", Request.Form["password"]);
using var reader = Command.ExecuteReader();

This code will open the database connection, it then creates a command with the correct sql to retrieve the login details of the user. the `@u` and `@p` are parameters and are replaced by the information from the form. Finally this will execute the command and fill the reader with the retrieved data.

Now, after the `Command.ExecuteReader()` command we need to handle the data returned. Add this code:

			if(reader.HasRows)
			{
				HttpContext.Session.SetString("_user", Request.Form["user"]);
				return LocalRedirect("/Index");
			}
			connection.Close();