PDA

View Full Version : Tạo trang đăng nhập trong ASP.NET với lập trình C#



sunflower
06-02-2008, 01:27 AM
Để tạo trang đăng nhập thì phải lưu trữ dữ liệu về người dùng để kiểm tra. Ở đây xài SQL 2000 và dữ liệu người dùng được lưu trữ như sau.



ACCOUNTS ( _USERNAME, _PASSWORD, _ACCESSRIGHT )


Và dùng một store procedure để truy vấn lấy thông tin người dùng có tên: sp_LogInCRM


CREATE proc sp_LogInCRM
@username varchar(30)
as
select _USERNAME, _PASSWORD, _ACCESSRIGHT
from ACCOUNTS
where _USERNAME=@username


GO


Tạo webform đăng nhập gồm label: lblMessages, Textbox: txtUsername, Texbox: txtPassword, Button: btnLogin

Trong web.config bạn thêm vào một node chứa chuổi kết nối cơ sở dữ liệu như sau: (tuỳ máy mà đổi tên cho đúng)


<connectionStrings>
<add name="CRMDatabase" connectionString="server=(local); Integrated Security=false; uid=sa; pwd=; database=CRMDatabase;" />
</connectionStrings>


Một class Login sẽ làm việc đăng nhập với code như sau:



using WCF = System.Web.Configuration.WebConfigurationManager; //gọi sử dụng web.config
using System.Data.SqlClient;

/// <summary>
/// Summary description for clsLogIn
/// </summary>
public class clsLogIn
{
String strUserName = "";
String strPassword = "";
String strMessage = "";
bool bolIsAdmin = false;
bool bolIsLoged = false;

public String UserName
{
set { strUserName = value; }
get { return strUserName; }
}

public String Password
{
set { strPassword = value; }
get { return strPassword; }
}

public String Message
{
set { strMessage = value; }
get { return strMessage; }
}

public bool IsAdmin
{
//set { bolIsAdmin = value; }
get { return bolIsAdmin; }
}

public bool IsLoged
{
//set { bolIsLoged=value;}
get { return bolIsLoged; }
}

public clsLogIn(string username, string password)
{
strUserName = username;
strPassword = password;
LogIn();
}

private void LogIn()
{
Method clsMT = new Method();

String strCon = WCF.ConnectionStrings["CRMDatabase"].ConnectionString;
SqlConnection myCon = new SqlConnection(strCon);
myCon.Open();
SqlCommand myCommand = new SqlCommand();
myCommand.CommandText = "sp_LogInCRM";
myCommand.Parameters.Add("@username", UserName);
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Connection = myCon;
SqlDataAdapter myAdapter = new SqlDataAdapter(myCommand);
DataTable myDataTable = new DataTable();
myAdapter.Fill(myDataTable);

if (myDataTable.Rows.Count == 0)
{
bolIsLoged = false;
strMessage = "Tên đăng nhập không đúng!!!!";
}
else if (myDataTable.Rows[0][1].ToString() != strPassword)
{
bolIsLoged = false;
strMessage = "Mật khẩu không đúng!!!!";
}
else
{
bolIsLoged = true;
if (myDataTable.Rows[0][2].ToString() == "ADMIN")
bolIsAdmin = true;
}
}
}


Trong trang đăng nhập tại code behind bạn viết code để thực thi việc đăng nhập như sau:


protected void btnLogIn_Click(object sender, EventArgs e)
{
clsLogIn objUser = new clsLogIn(txtUserName.Text.Trim(), txtPassword.Text.Trim());
if (objUser.IsLoged)
{
Session["sesLogin"] = objUser;
Response.Redirect("HomePage.aspx"); //Nếu đúng tên đăng nhập và mật khẩu thì gọi trang HomePage.aspx hiển thị
}
else
{
lblMessages.Text = objUser.Message; //Thông báo lỗi ra màn hình
}
}


Nếu thích thì có thêm mấy hàm mã hoá và giải mã cái password

meocon15_go
27-04-2011, 06:43 PM
cảm ơn bạn rất nhiều, mèo mới học về C# thôi nên chưa hiểu rõ lắm

tomcat
16-05-2011, 12:35 AM
Để tạo trang đăng nhập thì phải lưu trữ dữ liệu về người dùng để kiểm tra. Ở đây xài SQL 2000 và dữ liệu người dùng được lưu trữ như sau.



ACCOUNTS ( _USERNAME, _PASSWORD, _ACCESSRIGHT )


Và dùng một store procedure để truy vấn lấy thông tin người dùng có tên: sp_LogInCRM


CREATE proc sp_LogInCRM
@username varchar(30)
as
select _USERNAME, _PASSWORD, _ACCESSRIGHT
from ACCOUNTS
where _USERNAME=@username


GO


Tạo webform đăng nhập gồm label: lblMessages, Textbox: txtUsername, Texbox: txtPassword, Button: btnLogin

Trong web.config bạn thêm vào một node chứa chuổi kết nối cơ sở dữ liệu như sau: (tuỳ máy mà đổi tên cho đúng)


<connectionStrings>
<add name="CRMDatabase" connectionString="server=(local); Integrated Security=false; uid=sa; pwd=; database=CRMDatabase;" />
</connectionStrings>


Một class Login sẽ làm việc đăng nhập với code như sau:



using WCF = System.Web.Configuration.WebConfigurationManager; //gọi sử dụng web.config
using System.Data.SqlClient;

/// <summary>
/// Summary description for clsLogIn
/// </summary>
public class clsLogIn
{
String strUserName = "";
String strPassword = "";
String strMessage = "";
bool bolIsAdmin = false;
bool bolIsLoged = false;

public String UserName
{
set { strUserName = value; }
get { return strUserName; }
}

public String Password
{
set { strPassword = value; }
get { return strPassword; }
}

public String Message
{
set { strMessage = value; }
get { return strMessage; }
}

public bool IsAdmin
{
//set { bolIsAdmin = value; }
get { return bolIsAdmin; }
}

public bool IsLoged
{
//set { bolIsLoged=value;}
get { return bolIsLoged; }
}

public clsLogIn(string username, string password)
{
strUserName = username;
strPassword = password;
LogIn();
}

private void LogIn()
{
Method clsMT = new Method();

String strCon = WCF.ConnectionStrings["CRMDatabase"].ConnectionString;
SqlConnection myCon = new SqlConnection(strCon);
myCon.Open();
SqlCommand myCommand = new SqlCommand();
myCommand.CommandText = "sp_LogInCRM";
myCommand.Parameters.Add("@username", UserName);
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Connection = myCon;
SqlDataAdapter myAdapter = new SqlDataAdapter(myCommand);
DataTable myDataTable = new DataTable();
myAdapter.Fill(myDataTable);

if (myDataTable.Rows.Count == 0)
{
bolIsLoged = false;
strMessage = "Tên đăng nhập không đúng!!!!";
}
else if (myDataTable.Rows[0][1].ToString() != strPassword)
{
bolIsLoged = false;
strMessage = "Mật khẩu không đúng!!!!";
}
else
{
bolIsLoged = true;
if (myDataTable.Rows[0][2].ToString() == "ADMIN")
bolIsAdmin = true;
}
}
}


Trong trang đăng nhập tại code behind bạn viết code để thực thi việc đăng nhập như sau:


protected void btnLogIn_Click(object sender, EventArgs e)
{
clsLogIn objUser = new clsLogIn(txtUserName.Text.Trim(), txtPassword.Text.Trim());
if (objUser.IsLoged)
{
Session["sesLogin"] = objUser;
Response.Redirect("HomePage.aspx"); //Nếu đúng tên đăng nhập và mật khẩu thì gọi trang HomePage.aspx hiển thị
}
else
{
lblMessages.Text = objUser.Message; //Thông báo lỗi ra màn hình
}
}


Nếu thích thì có thêm mấy hàm mã hoá và giải mã cái password

Mình cũng làm như bạn, nhưng khi thử chương trình thì lại báo lỗi:

public clsLogIn(string username, string password)


lý do: CS1520: Method must have a return type

bạn giúp mình giải thích lỗi này với.

khoaimon
16-05-2011, 12:37 AM
Nó báo là phương thức phải có kiểu dữ liệu trả về.
Bác cop xem lỗi ở chỗ nào chứ, dài thế này thì biết làm sao mà dò.

tkquyhcm
17-12-2012, 12:07 AM
Mình cũng làm như bạn, nhưng khi thử chương trình thì lại báo lỗi:

public clsLogIn(string username, string password)


lý do: CS1520: Method must have a return type

bạn giúp mình giải thích lỗi này với.


bạn xóa cái này đi mình làm theo được (Method clsMT = new Method();)

donki
05-04-2015, 11:57 AM
sao bên design mình để tên id của textbox là txtUserName và txtPassword mà qua bên code nó lại báo là txtUserName does not exist in the current context vậy?
txtPassword cũng bị vậy luôn. Ai giúp mình với
28321