- How to authenticate a User using Forms Authentication.
- Deny Access to anonymous Users to access certain pages (Home page) and grant permission to access certain pages (Registration Page, Password Change Page) in our web application.
- How to verify user account using Email
- Locking User account if they had entered Wrong Password for 3 times in a row, this is for high security sites like banking sites to prevent from hackers.
- Unlocking Locked User account with Registered Mail id.
- Logging Out Users using Logout Button.
- Maintaining Separate Session Between Users.
Login.aspx Code
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
.style1
{
width: 100%;
}
.style2
{
width: 69px;
}
.style3
{
width: 335px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<br />
<h1>Login Page</h1>
<br />
<table class="style1">
<tr>
<td class="style3">
</td>
<td class="style2">
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td class="style3">
</td>
<td class="style2">
Name</td>
<td>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox4" runat="server" Visible="False" Width="2px"></asp:TextBox>
</td>
<td>
</td>
</tr>
<tr>
<td class="style3">
</td>
<td class="style2">
Password</td>
<td>
<asp:TextBox ID="TextBox2" runat="server" ontextchanged="TextBox2_TextChanged"
TextMode="Password"></asp:TextBox>
<asp:TextBox ID="TextBox3" runat="server" Visible="False" Width="4px"></asp:TextBox>
</td>
<td>
</td>
</tr>
<tr>
<td class="style3">
</td>
<td class="style2">
</td>
<td>
</td>
<td>
</td>
</tr>
</table>
<br />
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Login" />
<asp:Button ID="Button2" runat="server" Text="Clear" onclick="Button2_Click" />
<asp:Button ID="Button3" runat="server" Text="Forgot Password" Width="122px"
onclick="Button3_Click" />
<br />
<br />
<asp:HyperLink ID="HyperLink1" runat="server"
NavigateUrl="~/anon/Register.aspx">Not Registered Yet...Please Click Here to Register</asp:HyperLink>
<br />
<asp:Label ID="Label1" runat="server" Font-Bold="True" Font-Size="Large"
ForeColor="#FF3300"></asp:Label>
<br />
<br />
<asp:Label ID="Label2" runat="server" Font-Bold="True" Font-Size="Large"
ForeColor="#FF3300"></asp:Label>
<br />
<br />
<br />
<br />
</div>
</form>
</body>
</html>
Login.aspx.cs Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Collections;
using System.Configuration;
using System.Drawing;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using System.Web.Security;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Net.Mail;
using System.Text;
namespace Login_Reg_PwdLink_Validation
{
public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "";
Label2.Text = "";
if (checkAccountVerified())
{
if (checkuser())
{
string cs = ConfigurationManager.ConnectionStrings["connectstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand("select id,name,Islocked,password from login where name=@1 and password=@2", con);
SqlDataReader dr;
con.Open();
string decrypted = FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox2.Text, "SHA1");
cmd.Parameters.AddWithValue("@1", TextBox1.Text);
cmd.Parameters.AddWithValue("@2", decrypted);
dr = cmd.ExecuteReader();
if (dr.Read())
{
Session["id"] = dr[0];
Session["name"] = dr[1];
TextBox3.Text = dr[2].ToString();
if (Convert.ToInt32(TextBox4.Text) >= 3)
{
lockuseraccount();
}
else if (Convert.ToInt32(TextBox4.Text) < 3)
{
updateaftercorrectlogin();
FormsAuthentication.RedirectFromLoginPage(TextBox1.Text, false);
}
else
{
Label1.Text = "Your Account is locked !! due to too many invalid login attempts";
Label2.Text = "Please reset your password to login";
}
}
else if (Convert.ToInt32(TextBox4.Text) >= 2)
{
lockuseraccount();
lockuser();
}
else if (Convert.ToInt32(TextBox4.Text) <= 3)
{
lockuser();
// Label1.Text = "Invalid User Name or Password";
}
}
}
}
else
{
Label1.Text = "You Account is not yet verified !! Please Click the Link on Your Mail !!";
}
}
public void lockuser()
{
checklockattempts();
string cs = ConfigurationManager.ConnectionStrings["connectstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
int total = 2;
int locked = Convert.ToInt32(TextBox3.Text);
int remaining = total - locked;
SqlCommand cmd1 = new SqlCommand("update login set retryattempts=" + locked + "+1 where name=@1", con);
con.Open();
cmd1.Parameters.AddWithValue("@1", TextBox1.Text);
cmd1.Parameters.AddWithValue("@2",1);
cmd1.ExecuteNonQuery();
if (locked >= 3)
{
lockuseraccount();
}
else
{
if (remaining == 0)
{
Label1.Text = "Invalid UserName or Password";
checklockattempts();
Label2.Text = "Your Account haas been locked!!!";
}
else
{
Label1.Text = "Invalid UserName or Password";
checklockattempts();
Label2.Text = "" + remaining + " Login Attempts Left";
}
}
}
}
public void lockuseraccount()
{
string cs = ConfigurationManager.ConnectionStrings["connectstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd1 = new SqlCommand("update login set Islocked=1,lockeddatetime=getdate() where name=@1", con);
con.Open();
cmd1.Parameters.AddWithValue("@1", TextBox1.Text);
cmd1.ExecuteNonQuery();
Label1.Text = "Your Account is locked !! due to too many invalid login attempts";
Label2.Text = "Please reset your password to login";
}
}
public void updateaftercorrectlogin()
{
string cs = ConfigurationManager.ConnectionStrings["connectstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd1 = new SqlCommand("update login set RetryAttempts=0,IsLocked=0,LockedDateTime=null where name=@1", con);
con.Open();
cmd1.Parameters.AddWithValue("@1", TextBox1.Text);
cmd1.ExecuteNonQuery();
}
}
public void checklockattempts()
{
string cs = ConfigurationManager.ConnectionStrings["connectstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd1 = new SqlCommand("select retryattempts from login where name=@1", con);
SqlDataReader dr;
con.Open();
cmd1.Parameters.AddWithValue("@1", TextBox1.Text);
dr = cmd1.ExecuteReader();
if (dr.Read())
{
TextBox3.Text = dr[0].ToString();
}
else
{
Label1.Text = "User Doesnot Exists";
}
}
}
public bool checkuser()
{
string cs = ConfigurationManager.ConnectionStrings["connectstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd1 = new SqlCommand("select name,Retryattempts from login where name=@1", con);
SqlDataReader dr;
con.Open();
cmd1.Parameters.AddWithValue("@1", TextBox1.Text);
dr = cmd1.ExecuteReader();
if (dr.Read())
{
TextBox4.Text = dr[1].ToString();
return true;
}
else
{
Label1.Text = "User Doesnot Exists";
return false;
}
}
}
public bool checkAccountVerified()
{
string cs = ConfigurationManager.ConnectionStrings["connectstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd1 = new SqlCommand("select accountverified from login where name=@1", con);
SqlDataReader dr;
con.Open();
cmd1.Parameters.AddWithValue("@1", TextBox1.Text);
dr = cmd1.ExecuteReader();
if (dr.Read() && dr[0].ToString() == "notverified")
{
return false;
}
else
{
return true;
}
}
}
protected void TextBox2_TextChanged(object sender, EventArgs e)
{
}
protected void Button3_Click(object sender, EventArgs e)
{
Response.Redirect("anon/ResetPwdbyLink.aspx");
}
protected void chkRememberMe_CheckedChanged(object sender, EventArgs e)
{
}
protected void Button2_Click(object sender, EventArgs e)
{
TextBox1.Text = "";
TextBox2.Text = "";
}
}
Register.aspx
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
.style1
{
width: 100%;
}
.style2
{
width: 103px;
}
.style3
{
width: 323px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<br />
<h1>
User Registeration Page
</h1>
<table class="style1">
<tr>
<td class="style3">
</td>
<td class="style2">
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td class="style3">
</td>
<td class="style2">
Name</td>
<td>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</td>
<td>
</td>
</tr>
<tr>
<td class="style3">
</td>
<td class="style2">
Email</td>
<td>
<asp:TextBox ID="TextBox2" runat="server" ontextchanged="TextBox2_TextChanged"></asp:TextBox>
</td>
<td>
</td>
</tr>
<tr>
<td class="style3">
</td>
<td class="style2">
Password</td>
<td>
<asp:TextBox ID="TextBox3" runat="server" TextMode="Password"></asp:TextBox>
</td>
<td>
</td>
</tr>
<tr>
<td class="style3">
</td>
<td class="style2">
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td class="style3">
</td>
<td class="style2">
<asp:Button ID="Button1" runat="server" Text="Register"
onclick="Button1_Click" />
</td>
<td>
<asp:Button ID="Button2" runat="server" Text="Clear" onclick="Button2_Click" />
</td>
<td>
</td>
</tr>
</table>
<br /><asp:Label ID="Label1" runat="server" Font-Bold="True" ForeColor="#FF3300"
Font-Size="X-Large"></asp:Label>
</div>
</form>
</body>
</html>
Register.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;
using System.Text;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
using System.Net;
using System.Web.Security;
namespace Login_Reg_PwdLink_Validation
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void TextBox2_TextChanged(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
try
{
if (checkifusernameExists())
{
Label1.Text = "UserName Already Exists...";
}
else {
string cs = ConfigurationManager.ConnectionStrings["connectstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand("INSERT INTO login (name,email,password) values (@1,@2,@3)", con);
con.Open();
string encrypted = FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox3.Text, "SHA1");
cmd.Parameters.AddWithValue("@1", TextBox1.Text);
cmd.Parameters.AddWithValue("@2", TextBox2.Text);
cmd.Parameters.AddWithValue("@3", encrypted);
cmd.ExecuteNonQuery();
sendmailtoverifyaccount();
}
}
}
catch (Exception)
{
Label1.Text = "Registeration Failed";
}
}
public void sendmailtoverifyaccount()
{
generateuid();
string cs = ConfigurationManager.ConnectionStrings["connectstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd1 = new SqlCommand("select name,email,uid from login where name=@1", con);
SqlDataReader dr;
con.Open();
cmd1.Parameters.AddWithValue("@1", TextBox1.Text);
dr = cmd1.ExecuteReader();
if (dr.Read())
{
sendpasswordresetmail(dr["email"].ToString(), TextBox1.Text, dr["uid"].ToString());
string message = "A reset password link has been sent to your registered mail id. Please click on that link to Verify Your Account";
string url = "http://www.gmail.com/";
string script = "window.onload = function(){ alert('";
script += message;
script += "');";
script += "window.location = '";
script += url;
script += "'; }";
ClientScript.RegisterStartupScript(this.GetType(), "Redirect", script, true);
}
else
{
Label1.Text = "User Name doesnot Exists";
}
}
}
public void generateuid()
{
string cs = ConfigurationManager.ConnectionStrings["connectstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd1 = new SqlCommand("update login set uid=NEWID() where name=@1", con);
con.Open();
cmd1.Parameters.AddWithValue("@1", TextBox1.Text);
cmd1.ExecuteNonQuery();
}
}
private void sendpasswordresetmail(string tomail, string username, string uniqueid)
{
MailMessage mailmsg = new MailMessage("govindrajaram93@gmail.com", tomail);
StringBuilder sbmailbody = new StringBuilder();
sbmailbody.Append("Hi " + username + ",<br/><br/>");
sbmailbody.Append("Please click on following link to reset your password");
sbmailbody.Append("<br/>");
sbmailbody.Append("http://localhost:49364/anon/accountactivated.aspx?uid=" + uniqueid);
sbmailbody.Append("<br/><br/>");
sbmailbody.Append("<b>Pageone Technolgies</b>");
mailmsg.IsBodyHtml = true;
mailmsg.Body = sbmailbody.ToString();
mailmsg.Subject = "Reset Your Password";
SmtpClient smtpclient = new SmtpClient("smtp.gmail.com", 587);
smtpclient.Credentials = new NetworkCredential()
{
UserName = "govindrajaram93@gmail.com",
Password = "9952012073"
};
smtpclient.EnableSsl = true;//this is for enable the https
smtpclient.Send(mailmsg);
}
public bool checkifusernameExists()
{
string cs = ConfigurationManager.ConnectionStrings["connectstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd1 = new SqlCommand("select name from login where name=@1", con);
SqlDataReader dr;
con.Open();
cmd1.Parameters.AddWithValue("@1", TextBox1.Text);
dr = cmd1.ExecuteReader();
if (dr.Read())
{
return true;
}
else
{
return false;
}
}
}
protected void Button2_Click(object sender, EventArgs e)
{
TextBox1.Text = "";
TextBox2.Text = "";
TextBox3.Text = "";
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;
using System.Text;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
using System.Net;
using System.Web.Security;
namespace Login_Reg_PwdLink_Validation
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void TextBox2_TextChanged(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
try
{
if (checkifusernameExists())
{
Label1.Text = "UserName Already Exists...";
}
else {
string cs = ConfigurationManager.ConnectionStrings["connectstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand("INSERT INTO login (name,email,password) values (@1,@2,@3)", con);
con.Open();
string encrypted = FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox3.Text, "SHA1");
cmd.Parameters.AddWithValue("@1", TextBox1.Text);
cmd.Parameters.AddWithValue("@2", TextBox2.Text);
cmd.Parameters.AddWithValue("@3", encrypted);
cmd.ExecuteNonQuery();
sendmailtoverifyaccount();
}
}
}
catch (Exception)
{
Label1.Text = "Registeration Failed";
}
}
public void sendmailtoverifyaccount()
{
generateuid();
string cs = ConfigurationManager.ConnectionStrings["connectstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd1 = new SqlCommand("select name,email,uid from login where name=@1", con);
SqlDataReader dr;
con.Open();
cmd1.Parameters.AddWithValue("@1", TextBox1.Text);
dr = cmd1.ExecuteReader();
if (dr.Read())
{
sendpasswordresetmail(dr["email"].ToString(), TextBox1.Text, dr["uid"].ToString());
string message = "A reset password link has been sent to your registered mail id. Please click on that link to Verify Your Account";
string url = "http://www.gmail.com/";
string script = "window.onload = function(){ alert('";
script += message;
script += "');";
script += "window.location = '";
script += url;
script += "'; }";
ClientScript.RegisterStartupScript(this.GetType(), "Redirect", script, true);
}
else
{
Label1.Text = "User Name doesnot Exists";
}
}
}
public void generateuid()
{
string cs = ConfigurationManager.ConnectionStrings["connectstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd1 = new SqlCommand("update login set uid=NEWID() where name=@1", con);
con.Open();
cmd1.Parameters.AddWithValue("@1", TextBox1.Text);
cmd1.ExecuteNonQuery();
}
}
private void sendpasswordresetmail(string tomail, string username, string uniqueid)
{
MailMessage mailmsg = new MailMessage("govindrajaram93@gmail.com", tomail);
StringBuilder sbmailbody = new StringBuilder();
sbmailbody.Append("Hi " + username + ",<br/><br/>");
sbmailbody.Append("Please click on following link to reset your password");
sbmailbody.Append("<br/>");
sbmailbody.Append("http://localhost:49364/anon/accountactivated.aspx?uid=" + uniqueid);
sbmailbody.Append("<br/><br/>");
sbmailbody.Append("<b>Pageone Technolgies</b>");
mailmsg.IsBodyHtml = true;
mailmsg.Body = sbmailbody.ToString();
mailmsg.Subject = "Reset Your Password";
SmtpClient smtpclient = new SmtpClient("smtp.gmail.com", 587);
smtpclient.Credentials = new NetworkCredential()
{
UserName = "govindrajaram93@gmail.com",
Password = "9952012073"
};
smtpclient.EnableSsl = true;//this is for enable the https
smtpclient.Send(mailmsg);
}
public bool checkifusernameExists()
{
string cs = ConfigurationManager.ConnectionStrings["connectstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd1 = new SqlCommand("select name from login where name=@1", con);
SqlDataReader dr;
con.Open();
cmd1.Parameters.AddWithValue("@1", TextBox1.Text);
dr = cmd1.ExecuteReader();
if (dr.Read())
{
return true;
}
else
{
return false;
}
}
}
protected void Button2_Click(object sender, EventArgs e)
{
TextBox1.Text = "";
TextBox2.Text = "";
TextBox3.Text = "";
}
}
}
Home.aspx
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
.style1
{
color: #9999FF;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
Welcome...............<asp:Label ID="Label1" runat="server"
style="font-weight: 700"></asp:Label>
<asp:Button ID="Button1" runat="server" style="font-weight: 700"
Text="Logout" />
<h1>
<span class="style1">User Home Page</span></h1>
</div>
</form>
</body>
</html>
Home.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Login_Reg_PwdLink_Validation
{
public partial class Home : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (Session["name"] != null)
{
Label1.Text = Session["name"].ToString();
}
else
{
Response.Redirect("Login.aspx");
}
}
catch
{
Response.Redirect("Login.aspx");
}
}
public void killsession()
{
Session["name"] = null;
}
protected void Button1_Click(object sender, EventArgs e)
{
Session["name"] = null;
Response.Redirect("Login.aspx");
}
protected void Button2_Click(object sender, EventArgs e)
{
Response.Redirect("anon/changepassword.aspx");
}
}
}
Web.config
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="connectstr" connectionString="Data Source=GOKUL-PC\GOKULSQL;Initial Catalog=test;Integrated Security=True"/>
</connectionStrings>
</configuration>
<system.web>
<authentication mode="Forms" >
<forms loginUrl="Login.aspx" defaultUrl="Home.aspx">
<credentials passwordFormat="Clear"></credentials>
</forms>
</authentication >
<authorization>
<deny users="?"/>
</authorization>
</system.web>
Web.config to allow anonomous users
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</configuration>
accountactivated.aspx
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Font-Bold="True" Font-Size="XX-Large"
style="font-weight: 700"></asp:Label>
</div>
</form>
</body>
</html>
accountactivated.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data.SqlClient;
namespace Login_Reg_PwdLink_Validation.anon
{
public partial class accountactivated : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (checkpwdlinkvalid())
{
mailverified();
}
else
{
Label1.Text = " You have clicked a Invalid Link or expired link";
Label1.ForeColor = System.Drawing.Color.Red;
}
}
catch(Exception) { }
}
private void mailverified()
{
try
{
string cs = ConfigurationManager.ConnectionStrings["connectstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd1 = new SqlCommand("update login set uid=null,accountverified='Verified' where uid='" + Request.QueryString["uid"] + "'", con);
con.Open();
cmd1.ExecuteNonQuery();
string message = "Email Verified.... We Redirecting you to login page";
string url = "http://localhost:49364/Login.aspx";
string script = "window.onload = function(){ alert('";
script += message;
script += "');";
script += "window.location = '";
script += url;
script += "'; }";
ClientScript.RegisterStartupScript(this.GetType(), "Redirect", script, true);
}
}
catch (Exception)
{
Label1.Text = "";
}
}
public bool checkpwdlinkvalid()
{
string cs = ConfigurationManager.ConnectionStrings["connectstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd1 = new SqlCommand("select uid from login where uid='" + Request.QueryString["uid"] + "'", con);
SqlDataReader dr;
con.Open();
dr = cmd1.ExecuteReader();
if (dr.Read())
{
return true;
}
else
{
Label1.ForeColor = System.Drawing.Color.Red;
Label1.Text = "The Link has been Expired.. !!";
return false;
}
}
}
}
}
changepassword.aspx
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
.style1
{
width: 100%;
}
.style2
{
width: 162px;
}
.style3
{
width: 272px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
Welcome.....<asp:Label ID="Label1" runat="server"></asp:Label>
<br />
<br />
<br />
<br />
<br />
<br />
<table class="style1">
<tr>
<td class="style3">
</td>
<td class="style2">
Enter Current Password</td>
<td>
<asp:TextBox ID="TextBox3" runat="server" Width="149px" TextMode="Password"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server"
ControlToValidate="TextBox1" ErrorMessage="Enter your password"></asp:RequiredFieldValidator>
</td>
<td>
</td>
</tr>
<tr>
<td class="style3">
</td>
<td class="style2">
Enter New Password</td>
<td>
<asp:TextBox ID="TextBox1" runat="server" Width="152px" TextMode="Password"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="TextBox1" ErrorMessage="Please Enter Password"></asp:RequiredFieldValidator>
</td>
<td>
</td>
</tr>
<tr>
<td class="style3">
</td>
<td class="style2">
Retype New Password</td>
<td>
<asp:TextBox ID="TextBox2" runat="server" Width="155px" TextMode="Password"></asp:TextBox>
<asp:CompareValidator ID="CompareValidator1" runat="server"
ControlToCompare="TextBox1" ControlToValidate="TextBox2"
ErrorMessage="Both Passwords Should Match"></asp:CompareValidator>
</td>
<td>
</td>
</tr>
<tr>
<td class="style3">
</td>
<td class="style2">
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td class="style3">
</td>
<td class="style2">
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Save"
Width="88px" />
</td>
<td>
<asp:Button ID="Button2" runat="server" Text="Clear" Width="87px" />
</td>
<td>
</td>
</tr>
</table>
<br />
<asp:Label ID="Label2" runat="server" Font-Bold="True" ForeColor="#FF3300"></asp:Label>
<br />
<br />
<br />
</div>
</form>
</body>
</html>
Changepassword.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Collections;
using System.Configuration;
using System.Drawing;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using System.Web.Security;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Net.Mail;
using System.Text;
namespace Login_Reg_PwdLink_Validation
{
public partial class changepassword : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (Session["name"] != null)
{
Label1.Text = Session["name"].ToString();
}
else
{
Response.Redirect("Login.aspx");
}
}
catch
{
Response.Redirect("Login.aspx");
}
}
protected void Button1_Click(object sender, EventArgs e)
{
if (checkcurrentpwd())
{
string cs = ConfigurationManager.ConnectionStrings["connectstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand("update login set password=@1 where id=" + Session["id"].ToString() + "", con);
string encrypted = FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox1.Text, "SHA1");
cmd.Parameters.AddWithValue("@1", encrypted);
con.Open();
cmd.ExecuteNonQuery();
string message = "Password Changed Successfully !!";
string url = "http://localhost:49364/home.aspx";
string script = "window.onload = function(){ alert('";
script += message;
script += "');";
script += "window.location = '";
script += url;
script += "'; }";
ClientScript.RegisterStartupScript(this.GetType(), "Redirect", script, true);
}
}
}
public bool checkcurrentpwd()
{
string cs = ConfigurationManager.ConnectionStrings["connectstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd1 = new SqlCommand("select password from login where password=@1", con);
SqlDataReader dr;
con.Open();
string decrypted = FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox3.Text, "SHA1");
cmd1.Parameters.AddWithValue("@1", decrypted);
dr = cmd1.ExecuteReader();
if (dr.Read())
{
return true;
}
else
{
Label2.Text = "Current Password is not Valid";
return false;
}
}
}
}
}
changepwd.aspx
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
.style1
{
width: 156px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<table style="width: 677px">
<tr>
<td colspan="2"> <asp:Label ID="Label4" runat="server" Font-Bold="True" ForeColor="#0033CC"
Text="Change Password "></asp:Label>
</td>
</tr>
<tr>
<td class="style1">
<asp:Label ID="Label2" runat="server" Text="New Password "></asp:Label>
</td>
<td>
<asp:TextBox ID="TextBox1" runat="server" TextMode="Password" Width="150px"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="TextBox1" ErrorMessage="Password Required" ForeColor="Red"
Text="Password Required"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="style1">
<asp:Label ID="Label3" runat="server" Text="Confirm New Password"></asp:Label>
</td>
<td>
<asp:TextBox ID="TextBox2" runat="server" style="margin-left: 1px"
TextMode="Password" Width="150px"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server"
ControlToValidate="TextBox2" Display="Dynamic"
ErrorMessage="Confirm password Required" ForeColor="Red"
Text="Confirm password Required"></asp:RequiredFieldValidator>
<asp:CompareValidator ID="CompareValidator1" runat="server"
ControlToCompare="TextBox1" ControlToValidate="TextBox2" Display="Dynamic"
ErrorMessage="Password and Confirm Password must match" ForeColor="Red"
Operator="Equal" Text="Password and Confirm Password must match" Type="String"></asp:CompareValidator>
</td>
</tr>
<tr>
<td class="style1">
</td>
<td>
<asp:Button ID="Button1" runat="server" OnClick="btnSave_Click" Text="Save"
Width="70px" />
</td>
</tr>
<tr>
<td class="style1">
</td>
</tr>
</table>
<b>
<asp:Label ID="Label1" runat="server"></asp:Label>
</div>
</form>
</body>
</html>
changepwd.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web.Security;
namespace Login_Reg_PwdLink_Validation
{
public partial class changepwd : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (checkpwdlinkvalid())
{
}
else
{
Label1.Text = " You have clicked a Invalid Link or expired link";
Label1.ForeColor = System.Drawing.Color.Red;
TextBox1.Visible = false;
TextBox2.Visible = false;
Button1.Visible = false;
Label2.Visible = false;
Label3.Visible = false;
Label4.Visible = false;
}
}
protected void btnSave_Click(object sender, EventArgs e)
{
changepasswordandUpdateuserdata();
}
public void changepasswordandUpdateuserdata()
{
try
{
string cs = ConfigurationManager.ConnectionStrings["connectstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd1 = new SqlCommand("update login set password=@1,uid=null,RetryAttempts=0,IsLocked=0,LockedDateTime=null where uid='" + Request.QueryString["uid"] + "'", con);
con.Open();
string encrypted = FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox1.Text, "SHA1");
cmd1.Parameters.AddWithValue("@1", encrypted);
cmd1.ExecuteNonQuery();
string message = "Password has been changed successfull,You will now be redirected to Login Page.";
string url = "http://localhost:49364/Login.aspx";
string script = "window.onload = function(){ alert('";
script += message;
script += "');";
script += "window.location = '";
script += url;
script += "'; }";
ClientScript.RegisterStartupScript(this.GetType(), "Redirect", script, true);
}
}
catch (Exception ex)
{
Label1.Text = "Error Changing Password , Please Try again";
}
}
public bool checkpwdlinkvalid()
{
string cs = ConfigurationManager.ConnectionStrings["connectstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd1 = new SqlCommand("select uid from login where uid='" + Request.QueryString["uid"] + "'", con);
SqlDataReader dr;
con.Open();
cmd1.Parameters.AddWithValue("@1", TextBox1.Text);
dr = cmd1.ExecuteReader();
if (dr.Read())
{
return true;
}
else
{
Label1.ForeColor = System.Drawing.Color.Red;
Label1.Text = "The Link has been Expired.. !!";
return false;
}
}
}
}
}
ResetPwdbyLink.aspx
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table style="width: 319px">
<tr>
<td colspan="2">
<b>Reset My Password</b>
</td>
</tr>
<tr>
<td>
User Name
</td>
<td>
<asp:TextBox ID="TextBox1" runat="server" Width="150px"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:TextBox ID="TextBox2" runat="server" Visible="False" Width="51px"></asp:TextBox>
</td>
<td>
<asp:Button ID="Button1" runat="server" OnClick="btnResetPassword_Click"
Text="Reset Password" />
</td>
</tr>
<tr>
<td align="left" valign="top">
</td>
</tr>
</table>
<asp:Label ID="Label1" runat="server" Font-Bold="True"></asp:Label>
</div>
</form>
</body>
</html>
ResetPwdbyLink.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;
using System.Text;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
using System.Net;
namespace Login_Reg_PwdLink_Validation
{
public partial class ResetPwdbyLink : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnResetPassword_Click(object sender, EventArgs e)
{
generateuid();
string cs = ConfigurationManager.ConnectionStrings["connectstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd1 = new SqlCommand("select name,email,uid from login where name=@1", con);
SqlDataReader dr;
con.Open();
cmd1.Parameters.AddWithValue("@1", TextBox1.Text);
dr = cmd1.ExecuteReader();
if (dr.Read())
{
sendpasswordresetmail(dr["email"].ToString(), TextBox1.Text, dr["uid"].ToString());
//Label1.ForeColor = System.Drawing.Color.Green;
//Label1.Text = "reset password link is sent to your registered email";
string message = "A reset password link has been sent to your registered mail id. Please click on that link to change your password.You Will now be redirected to gmail";
string url = "http://www.gmail.com/";
string script = "window.onload = function(){ alert('";
script += message;
script += "');";
script += "window.location = '";
script += url;
script += "'; }";
ClientScript.RegisterStartupScript(this.GetType(), "Redirect", script, true);
}
else
{
Label1.Text = "User Name doesnot Exists";
}
}
}
public void generateuid()
{
string cs = ConfigurationManager.ConnectionStrings["connectstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd1 = new SqlCommand("update login set uid=NEWID() where name=@1", con);
con.Open();
cmd1.Parameters.AddWithValue("@1", TextBox1.Text);
cmd1.ExecuteNonQuery();
}
}
private void sendpasswordresetmail(string tomail, string username, string uniqueid)
{
MailMessage mailmsg = new MailMessage("Your Email iD here", tomail);
StringBuilder sbmailbody = new StringBuilder();
sbmailbody.Append("Hi " + username + ",<br/><br/>");
sbmailbody.Append("Please click on following link to reset your password");
sbmailbody.Append("<br/>");
sbmailbody.Append("http://localhost:49364/anon/changepwd.aspx?uid=" + uniqueid);
sbmailbody.Append("<br/><br/>");
sbmailbody.Append("<b>EGN Solutions</b>");
mailmsg.IsBodyHtml = true;
mailmsg.Body = sbmailbody.ToString();
mailmsg.Subject = "Reset Your Password";
SmtpClient smtpclient = new SmtpClient("smtp.gmail.com", 587);
smtpclient.Credentials = new NetworkCredential()
{
UserName = "Input Your Email Id",
Password = "Input Password"
};
smtpclient.EnableSsl = true;//this is for enable the https
smtpclient.Send(mailmsg);
}
}
}
No comments:
Post a Comment