HTML
<body>
<section class="content" style="width: 50%;margin-left: 25%;margin-top: 50px;">
<div class="row">
@if (TempData["Signup"] == "success")
{
<div class="alert alert-success alert-dismissible" style="margin-top: 5px">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
Signup success , please login to continue..
</div>
}
else
{
<div class="alert alert-success alert-dismissible" style="margin-top: 5px;visibility:hidden">
</div>
}
</div>
</section>
<div class="login-card">
<h1>Log-in</h1><br>
<form action="@Url.Action("Login","Home")@(Request.QueryString["ReturnUrl"] != null ? "?"+Request.QueryString : "")" method="post">
@Html.TextBoxFor(x => x.emailid, new { placeholder = "Email", maxlength = "50", tabindex = "1", @class = "form-control" })
@Html.TextBoxFor(x => x.password, new { placeholder = "Password", type="password",maxlength = "50", tabindex = "2", @class = "form-control" })
<button name="login" class="login login-submit">Login</button>
</form>
<div class="login-help">
<a href="@Url.Action("UserRegistration","Home")">Register</a> • <a href="#">Forgot Password</a>
</div>
@if (ViewContext.ViewData.ModelState.ContainsKey("Error") || ViewContext.ViewData.ModelState.ContainsKey("Login"))
{
<div class="alert alert-danger alert-dismissible" style="margin-top: 5px">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
@Html.ValidationSummary(false)
</div>
}
</div>
</body>
Controller
SessionFactory.cs
to store session
public class SessionFactory
{
private static SessionFactory _SessionFactory = new SessionFactory();
public SessionFactory()
{
}
public static SessionFactory Instance
{
get
{
return _SessionFactory;
}
}
public Users CurrentUsers
{
get
{
if (HttpContext.Current.Session["Users"] == null)
{
return null;
}
return (Users)HttpContext.Current.Session["Users"];
}
set
{
HttpContext.Current.Session["Users"] = value;
}
}
}
ValidateUserAttribute.cs
attribute to validate
public class ValidateUserAttribute: ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (SessionFactory.Instance.CurrentUsers == null)
filterContext.Result = new RedirectResult(string.Format("/Home/Login?ReturnUrl={0}",HttpUtility.UrlEncode(filterContext.HttpContext.Request.Url.AbsolutePath)));
}
}
Property
to check querystring
private string ReturnUrl
{
get
{
if (Request.QueryString["ReturnUrl"] != null)
{
return Request.QueryString["ReturnUrl"];
}
return string.Empty;
}
}
<body>
<section class="content" style="width: 50%;margin-left: 25%;margin-top: 50px;">
<div class="row">
@if (TempData["Signup"] == "success")
{
<div class="alert alert-success alert-dismissible" style="margin-top: 5px">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
Signup success , please login to continue..
</div>
}
else
{
<div class="alert alert-success alert-dismissible" style="margin-top: 5px;visibility:hidden">
</div>
}
</div>
</section>
<div class="login-card">
<h1>Log-in</h1><br>
<form action="@Url.Action("Login","Home")@(Request.QueryString["ReturnUrl"] != null ? "?"+Request.QueryString : "")" method="post">
@Html.TextBoxFor(x => x.emailid, new { placeholder = "Email", maxlength = "50", tabindex = "1", @class = "form-control" })
@Html.TextBoxFor(x => x.password, new { placeholder = "Password", type="password",maxlength = "50", tabindex = "2", @class = "form-control" })
<button name="login" class="login login-submit">Login</button>
</form>
<div class="login-help">
<a href="@Url.Action("UserRegistration","Home")">Register</a> • <a href="#">Forgot Password</a>
</div>
@if (ViewContext.ViewData.ModelState.ContainsKey("Error") || ViewContext.ViewData.ModelState.ContainsKey("Login"))
{
<div class="alert alert-danger alert-dismissible" style="margin-top: 5px">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
@Html.ValidationSummary(false)
</div>
}
</div>
</body>
Controller
SessionFactory.cs
to store session
public class SessionFactory
{
private static SessionFactory _SessionFactory = new SessionFactory();
public SessionFactory()
{
}
public static SessionFactory Instance
{
get
{
return _SessionFactory;
}
}
public Users CurrentUsers
{
get
{
if (HttpContext.Current.Session["Users"] == null)
{
return null;
}
return (Users)HttpContext.Current.Session["Users"];
}
set
{
HttpContext.Current.Session["Users"] = value;
}
}
}
ValidateUserAttribute.cs
attribute to validate
public class ValidateUserAttribute: ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (SessionFactory.Instance.CurrentUsers == null)
filterContext.Result = new RedirectResult(string.Format("/Home/Login?ReturnUrl={0}",HttpUtility.UrlEncode(filterContext.HttpContext.Request.Url.AbsolutePath)));
}
}
Property
to check querystring
private string ReturnUrl
{
get
{
if (Request.QueryString["ReturnUrl"] != null)
{
return Request.QueryString["ReturnUrl"];
}
return string.Empty;
}
}
When Login
if querystring found than redirect to that url
[HttpPost]
public ActionResult Login(Users users)
{
if (!ModelState.IsValid)
{
ModelState.AddModelError("Error", "");
return View(users);
}
SessionFactory.Instance.CurrentUsers = userData;
if (!string.IsNullOrEmpty(ReturnUrl))
{
return RedirectPermanent(ReturnUrl);
}
else
return RedirectToAction("Dashboard", "Dashboard");
}
Validate controller
[ValidateUser]
public class MyController : Controller
{
}

