PDA

View Full Version : سوال: authenticate کردن یوزرها و خواندن یوزر و پسورد از دیتابیس



manit44
پنج شنبه 17 بهمن 1392, 10:21 صبح
سلام به تمامی دوستان

من با استفاده از ابزار login ویژوال استودیو و در قسمت web.config یوزرها رو authenticate کردم ولی میخوام یوزر و پسورد رو از دیتا بیس بخونه چه کدی باید بنویسم؟

خیلی فوریه کمک کنید.

ممنون.

kablayi
پنج شنبه 17 بهمن 1392, 11:48 صبح
من از کنترل login استفاده نمیکنم خودم دوتا تکت باکس ، یه دکمه و یه چکباکس میزارم به صورت زیر عمل میکنم:
توی button_click اینو مینویسم:

protected void btnLOGIN_Click(object sender, EventArgs e)
{
lblmessage.Text = "";
DBClass dbcls = new DBClass();
if (dbcls.CheckUser(txtUSRN.Text.Trim(), txtPASSW.Text.Trim()))
{
FormsAuthentication.RedirectFromLoginPage(txtUSRN. Text.Trim(), chboxRem.Checked);
}
else
{
lblmessage.Text = "نام کاربری یا رمزعبور اشتباه است";
}
}


توی وب کانفیگ هم اینو ست میکنم:

<system.web>
.
.
.
<authentication mode="Forms">
<forms name=".AuthenticateMySite" loginUrl="login.aspx" defaultUrl="Default.aspx" timeout="43200" slidingExpiration="true"></forms>
</authentication>
.
.
</system.web>


توی صفحاتی هم که نیاز به مجوز لاگین هست در page_load اون صفحه یا page_load مستر پیج اون کد زیر رو مینویسم تا بدون لاگین اجازه ورود نده:

bool checkLogin = HttpContext.Current.User.Identity.IsAuthenticated;
if (checkLogin)
{
string UserName = HttpContext.Current.User.Identity.Name;
DBClass dbcls = new DBClass();
string FullName = dbcls.GetUserFullName(UserName);
HLUser.Text = "کاربر فعال : " + FullName;
}
else
{
FormsAuthentication.SignOut();
Response.Redirect(FormsAuthentication.LoginUrl);
}


بازم تحقیق کن شاید روشی که من استفاده میکنم اشتباه باشه...
موفق باشید

manit44
پنج شنبه 17 بهمن 1392, 11:54 صبح
CheckUser چیه تو کد بالا؟

kablayi
پنج شنبه 17 بهمن 1392, 11:57 صبح
CheckUser چیه تو کد بالا؟

یه تابع هست که از درون یه کلاس صدا زده میشه و کار چک کردن username و pass از دیتابیس رو بر عهده داره که در صورت وجود user و pass ارسالی در دیتابیس مقدار true رو برمیگردونه و الا false

manit44
پنج شنبه 17 بهمن 1392, 11:59 صبح
میشه کد کلاسشو برام بزارین؟

ممنون میشم.

kablayi
پنج شنبه 17 بهمن 1392, 12:06 عصر
میشه کد کلاسشو برام بزارین؟

ممنون میشم.



private string ConnectionString()
{
string constr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
return constr;
}

public bool CheckUser(string UserName, string PassWord)
{
int count = 0;
SqlConnection cn = new SqlConnection(ConnectionString());
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "SELECT COUNT(*) FROM UserPass WHERE (UserName=@UN)AND(Password=@psw)";
cmd.Parameters.AddWithValue("@UN", UserName);
cmd.Parameters.AddWithValue("@psw", PassWord);
cmd.Connection = cn;
cn.Open();
count = Convert.ToInt32(cmd.ExecuteScalar());
cn.Close();
if (count > 0)
return true;
else
return false;
}

manit44
پنج شنبه 17 بهمن 1392, 12:19 عصر
GetUserFullName رو نذاشتین

kablayi
پنج شنبه 17 بهمن 1392, 12:25 عصر
GetUserFullName رو نذاشتین
اینا دیگه دستورات ساده ایه که خوندن اطلاعات از دیتابیس هست...


public string GetUserFullName(string UserName)
{
string FName = "";
SqlConnection cn = new SqlConnection(ConnectionString());
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "SELECT Name, Family FROM UserPass WHERE (UserName = @UN)";
cmd.Parameters.AddWithValue("@UN", UserName);
cmd.Connection = cn;
SqlDataReader dr;
cn.Open();
dr = cmd.ExecuteReader();
while (dr.Read())
{
FName = dr[0].ToString() + " " + dr[1].ToString();
}
dr.Close();
cn.Close();
return FName;
}

kablayi
پنج شنبه 17 بهمن 1392, 13:29 عصر
آخه من دو تا پیج دارم میخوام تو پیج دومم اینو نمایش بده چکار باید بکنم؟
به کدهایی که نوشتم دقت کنید...
به کدهای قسمت وب کانفیگ بیشتر دقت کنید متوجه میشید
دو تا پیج توی اون تعریف شده یه loginURL هست که مشخصه برای چیه ویه defaultUrl که در صورت معتبر بودن user و pass به اون هدایت میشه...