CREATE
TABLE
sysUser
(
FirstName
VARCHAR
(20)
NOT
NULL
,
LastName
UserID
PRIMARY
KEY
UserPassword
)
PROCEDURE
spRegisterUser
@FirstName
(20),
@LastName
(20) ,
@UserID
@UserPassword
AS
BEGIN
DECLARE
@result
(10) =
'Failed'
IF
EXISTS(
SELECT
1
FROM
where
UserID=@UserID)
INSERT
INTO
VALUES
@FirstName,@LastName,@UserID,@UserPassword
SET
@result=
'Success'
END
Result
spValidateUserLogin
@LoginID
@LoginPassword
@authentication
(10)=
IF EXISTS(
WHERE
UserID=@LoginID
AND
UserPassword =@LoginPassword)
@authentication=
isAuthenticated
using
System;
System.Collections.Generic;
System.ComponentModel.DataAnnotations;
System.Linq;
System.Threading.Tasks;
namespace
CookieAuthDemo.Models
{
public
class
UserDetails
[Required]
[Display(Name =
"First Name"
)]
string
FirstName {
get
;
set
; }
"Last Name"
LastName {
"User ID"
UserID {
"Password"
[DataType(DataType.Password)]
Password {
}
"Logging"
: {
"IncludeScopes"
:
false
"LogLevel"
"Default"
"Warning"
},
"ConnectionStrings"
"myConString"
"Your connection string here"
Microsoft.Extensions.Configuration;
System.Data;
System.Data.SqlClient;
System.IO;
UserDataAccessLayer
static
IConfiguration Configuration {
//To Read ConnectionString from appsettings.json file
private
GetConnectionString()
var builder =
new
ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile(
"appsettings.json"
);
Configuration = builder.Build();
connectionString = Configuration[
"ConnectionStrings:myConString"
];
return
connectionString;
connectionString = GetConnectionString();
//To Register a new user
RegisterUser(UserDetails user)
(SqlConnection con =
SqlConnection(connectionString))
SqlCommand cmd =
SqlCommand(
"spRegisterUser"
, con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue(
"@FirstName"
, user.FirstName);
"@LastName"
, user.LastName);
"@UserID"
, user.UserID);
"@UserPassword"
, user.Password);
con.Open();
result = cmd.ExecuteScalar().ToString();
con.Close();
result;
//To Validate the login
ValidateLogin(UserDetails user)
"spValidateUserLogin"
"@LoginID"
"@LoginPassword"
@model CookieAuthDemo.Models.UserDetails
@{
ViewData["Title"] = "UserLogin";
<
h2
>Register</
>
h4
>New User</
hr
/>
div
=
"row"
"col-md-4"
@if (TempData["Success"] != null)
p
"alert alert-success"
>@TempData["Success"] <
a
asp-action
"UserLogin"
>Click here to login</
></
@if (TempData["Fail"] != null)
"alert alert-danger"
>@TempData["Fail"]</
form
"RegisterUser"
asp-validation-summary
"ModelOnly"
"text-danger"
"form-group"
label
asp-for
"FirstName"
"control-label"
input
"form-control"
span
asp-validation-for
</
"LastName"
"UserID"
type
"submit"
value
"Register"
"btn btn-default btn-primary"
>Back to User Login</
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
>User</
>Login</
@if (TempData["UserLoginFailed"] != null)
>@TempData["UserLoginFailed"]</
"Login"
"btn btn-default btn-success"
"btn btn-info"
>SignUp</
System.Security.Claims;
CookieAuthDemo.Models;
Microsoft.AspNetCore.Authentication;
Microsoft.AspNetCore.Mvc;
CookieAuthDemo.Controllers
LoginController : Controller
UserDataAccessLayer objUser =
UserDataAccessLayer();
[HttpGet]
IActionResult RegisterUser()
View();
[HttpPost]
IActionResult RegisterUser([Bind] UserDetails user)
if
(ModelState.IsValid)
RegistrationStatus = objUser.RegisterUser(user);
(RegistrationStatus ==
"Success"
ModelState.Clear();
TempData[
] =
"Registration Successful!"
else
"Fail"
"This User ID already exists. Registration Failed."
IActionResult UserLogin()
[ValidateAntiForgeryToken]
async Task<IActionResult> UserLogin([Bind] UserDetails user)
ModelState.Remove(
LoginStatus = objUser.ValidateLogin(user);
(LoginStatus ==
var claims =
List<Claim>
Claim(ClaimTypes.Name, user.UserID)
};
ClaimsIdentity userIdentity =
ClaimsIdentity(claims,
"login"
ClaimsPrincipal principal =
ClaimsPrincipal(userIdentity);
await HttpContext.SignInAsync(principal);
RedirectToAction(
"UserHome"
"User"
"UserLoginFailed"
"Login Failed.Please enter correct credentials"
ViewData["Title"] = "UserHome";
ul
"nav navbar-nav navbar-right"
li
"Logout"
>Sign Out</
>UserHome</
h3
>This is the user home page</
Microsoft.AspNetCore.Authorization;
[Authorize]
UserController : Controller
IActionResult UserHome()
async Task<IActionResult> Logout()
await HttpContext.SignOutAsync();
Microsoft.AspNetCore.Authentication.Cookies;
Microsoft.AspNetCore.Builder;
Microsoft.AspNetCore.Hosting;
Microsoft.Extensions.DependencyInjection;
CookieAuthDemo
Startup
Startup(IConfiguration configuration)
Configuration = configuration;
// This method gets called by the runtime. Use this method to add services to the container.
void
ConfigureServices(IServiceCollection services)
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
options.LoginPath =
"/Login/UserLogin/"
});
services.AddMvc();
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
Configure(IApplicationBuilder app, IHostingEnvironment env)
app.UseAuthentication();
(env.IsDevelopment())
app.UseBrowserLink();
app.UseDeveloperExceptionPage();
app.UseExceptionHandler(
"/Home/Error"
app.UseStaticFiles();
app.UseMvc(routes =>
routes.MapRoute(
name:
"default"
template:
"{controller=Login}/{action=UserLogin}/{id?}"