PDA

View Full Version : ذخیره آی دی کاربری که لاگین کرده



nasim_movie
دوشنبه 24 فروردین 1394, 10:09 صبح
سلام دوستان
چه طوری میتونم آی دی کاربری که لاگین کرده را در سشن یا کوکی ذخیره کنم و از اطلاعاتش استفاده کنم ؟
لطفا با کد بهم بگید و بگید کجا باید کد رو بزارم.

خیلی عجله دارم ممنون میشم زودتر بهم بگید

DPSxerex
دوشنبه 24 فروردین 1394, 16:26 عصر
دوست عزیز اطلاعات کاربر رو هنگام لاگین در سایت تو یه Session ذخیره کن و هر جایی که خواستی ازش استفاده کن
واسه خوندن کاربری که لاگین کرده هم از لینک زیر استفاده کن
http://stackoverflow.com/questions/912276/asp-net-membership-how-to-set-the-user-as-logged-in

nasim_movie
دوشنبه 24 فروردین 1394, 20:23 عصر
ممنون دوست عزیز ولی نمیدونم باید چطوری این کارو بکنم لطفا کد بگید بهم ممنونم


دوست عزیز اطلاعات کاربر رو هنگام لاگین در سایت تو یه Session ذخیره کن و هر جایی که خواستی ازش استفاده کن
واسه خوندن کاربری که لاگین کرده هم از لینک زیر استفاده کن
http://stackoverflow.com/questions/912276/asp-net-membership-how-to-set-the-user-as-logged-in

alireza_s_84
دوشنبه 24 فروردین 1394, 21:35 عصر
سلام دوستان
چه طوری میتونم آی دی کاربری که لاگین کرده را در سشن یا کوکی ذخیره کنم و از اطلاعاتش استفاده کنم ؟
لطفا با کد بهم بگید و بگید کجا باید کد رو بزارم.

خیلی عجله دارم ممنون میشم زودتر بهم بگید


کدی که باهاش لاگین میکنید رو قرار بدین تا بهتون بگم چطور اطلاعات رو توی Session ذخیره کنید. بستگی به نحوه لاگین کردن شما داره.

nasim_movie
سه شنبه 25 فروردین 1394, 09:15 صبح
کدم اینه یه کلاس دارم برای چک کردنه این که کاربر قبلا ثبت نام کرده یا نه :


public
static bool check_login(string username, string password)

{




SqlConnection cnn = new SqlConnection("Data Source=.;Initial Catalog=test;Integrated Security=true");


SqlCommand cmd = new SqlCommand();

cmd.Connection = cnn;

cmd.CommandText =
"SELECT user_id FROM users WHERE username=@username AND password=@password";

cmd.Parameters.AddWithValue(
"@username", username);

cmd.Parameters.AddWithValue(
"@password", GenerateHash(password.Trim()));

cnn.Open();


DataTable dt = new DataTable();

dt.Load(cmd.ExecuteReader());

cnn.Close();


if (dt.Rows.Count == 1)

{


return true;


}


return false;

}




بعد این کلاس رو تو دکمه لاگین تو صفحه لاگین فراخوانی میکنم. این کد مربوط به صفحه لاگین:


protected
void Page_Load(object sender, EventArgs e)

{

lblmessage.Visible =
false;


if (!IsPostBack)

{

lblsec.Text =
usersUtility.generateSecurity();

}

}





protected void btn_login_Click(object sender, EventArgs e)

{


string username = txtlogin.Text;


string password = txtpass.Text;


if (username == "" || password == "")

{

lblmessage.Visible =
true;

lblmessage.Text =
"لطفا اطلاعات را به صورت صحیح وارد نمایید";

}


else if (sec_code.Text != Session["sec_code"].ToString())

{

lblmessage.Visible =
true;

lblmessage.Text =
"کد امنیتی اشتباه است";

lblsec.Text =
usersUtility.generateSecurity();

}


else

{


if (usersUtility.check_login(usersUtility.sanitize_Sq l(username), usersUtility.sanitize_Sql(password)))

{


HttpContext.Current.Session.Add("username", username);



Response.Redirect(
"Default.aspx");

}


else

{

lblmessage.Visible =
true;

lblmessage.Text =
"نام کاربری یا کلمه عبور صحیح نمی باشد";

lblsec.Text =
usersUtility.generateSecurity();

}

}

}

}


ممنونم

alireza_s_84
سه شنبه 25 فروردین 1394, 11:29 صبح
کدم اینه یه کلاس دارم برای چک کردنه این که کاربر قبلا ثبت نام کرده یا نه :


public
static bool check_login(string username, string password)

{




SqlConnection cnn = new SqlConnection("Data Source=.;Initial Catalog=test;Integrated Security=true");


SqlCommand cmd = new SqlCommand();

cmd.Connection = cnn;

cmd.CommandText =
"SELECT user_id FROM users WHERE username=@username AND password=@password";

cmd.Parameters.AddWithValue(
"@username", username);

cmd.Parameters.AddWithValue(
"@password", GenerateHash(password.Trim()));

cnn.Open();


DataTable dt = new DataTable();

dt.Load(cmd.ExecuteReader());

cnn.Close();


if (dt.Rows.Count == 1)

{


return true;


}


return false;

}




بعد این کلاس رو تو دکمه لاگین تو صفحه لاگین فراخوانی میکنم. این کد مربوط به صفحه لاگین:


protected
void Page_Load(object sender, EventArgs e)

{

lblmessage.Visible =
false;


if (!IsPostBack)

{

lblsec.Text =
usersUtility.generateSecurity();

}

}





protected void btn_login_Click(object sender, EventArgs e)

{


string username = txtlogin.Text;


string password = txtpass.Text;


if (username == "" || password == "")

{

lblmessage.Visible =
true;

lblmessage.Text =
"لطفا اطلاعات را به صورت صحیح وارد نمایید";

}


else if (sec_code.Text != Session["sec_code"].ToString())

{

lblmessage.Visible =
true;

lblmessage.Text =
"کد امنیتی اشتباه است";

lblsec.Text =
usersUtility.generateSecurity();

}


else

{


if (usersUtility.check_login(usersUtility.sanitize_Sq l(username), usersUtility.sanitize_Sql(password)))

{


HttpContext.Current.Session.Add("username", username);



Response.Redirect(
"Default.aspx");

}


else

{

lblmessage.Visible =
true;

lblmessage.Text =
"نام کاربری یا کلمه عبور صحیح نمی باشد";

lblsec.Text =
usersUtility.generateSecurity();

}

}

}

}


ممنونم
نحوه لاگین کردنتون اشتباه بود از کد زیر استفاده کنید:
if (usersUtility.check_login(usersUtility.sanitize_Sq l(username), usersUtility.sanitize_Sql(password))) {
FormsAuthentication.SetAuthCookie(userName, false);
Response.Redirect("Default.aspx");


}
هرجا نیاز داشتین که Username کاربر جاری رو بدست بیارین به روش زیر عمل کنید:
username = User.Identity.Name;

nasim_movie
سه شنبه 25 فروردین 1394, 16:16 عصر
دوست عزیز من username رو نمیخوام داشته باشم میخوام آی دی یوزری که وارد شده رو داشته باشم تا از طریق اون آی دی بتونم تو صفحه دیگه اطلاعاتش رو نمایش بدم مثل حالت پروفایل داشتن یوزر.


نحوه لاگین کردنتون اشتباه بود از کد زیر استفاده کنید:
if (usersUtility.check_login(usersUtility.sanitize_Sq l(username), usersUtility.sanitize_Sql(password))) {
FormsAuthentication.SetAuthCookie(userName, false);
Response.Redirect("Default.aspx");


}
هرجا نیاز داشتین که Username کاربر جاری رو بدست بیارین به روش زیر عمل کنید:
username = User.Identity.Name;

sajadsobh
سه شنبه 25 فروردین 1394, 17:09 عصر
به نظر شما آیدی و username چه فرقی باهم دارند؟! توی سایت ها username منحصر بفرد هست همیشه. یعنی هیچوقت دو نفر با یه username یکسان نمی تونن ثبت نام کنن. پس قاعدتاً شما چه به آیدی دسترسی داشته باشین چه به آیدی، می تونین به سایر جزئیات اون فرد دسترسی پیدا کنین. حالا مثلاً اگه آیدی واستون مهمه می تونین یه select بکار ببرین مثل این:

SELECT ID FROM Users WHERE UserName = @Username

alireza_s_84
سه شنبه 25 فروردین 1394, 18:00 عصر
دوست عزیز من username رو نمیخوام داشته باشم میخوام آی دی یوزری که وارد شده رو داشته باشم تا از طریق اون آی دی بتونم تو صفحه دیگه اطلاعاتش رو نمایش بدم مثل حالت پروفایل داشتن یوزر.

اگر فقط ID یوزر رو نیاز داشته باشین خب اینطوری میتونید اصلاح کنید:
if (usersUtility.check_login(usersUtility.sanitize_Sq l(username), usersUtility.sanitize_Sql(password))) { FormsAuthentication.SetAuthCookie(userName, false);
Session["UserId"] = از دیتابیس بگیرین ;
Response.Redirect("Default.aspx");
}
هر جا هم لازم داشتین میتونید اینجوری واکشی کنید:
int userId = (int)Session["userid"];
اگر اطلاعات دیگه ای از کاربر نیاز دارین برای مثال اطلاتی مثل نام ، نام خانوادگی ، شناسه منحصر به فرد ، آخرین زمان بازدید و یا هر اطلاعات دیگه مرتبط با کاربر میتونید یک کلاس برای نگهداری این اطلاعات بسازید و در زمان لاگین کردن یک نمونه از کلاس ساخته و با اطلاعات کاربر پر کنید ، توی Session قرار بدین و هر جا لازم بود ازش استفاده کنید.

nasim_movie
سه شنبه 25 فروردین 1394, 21:45 عصر
همین کد رو گذاشتم ولی بهم ارور داد و از نوعش ایراد گرفت اونو استرینگ کردم دقیقا همون دستور دیتا بیسم رو انتقال داد. دستوری که واسه گرفتن از دیتابیس نوشتم اینه: SELECT user_id FROM users
درسته این دستور؟

ولی به این روش چطوری میخواد آی دی همون فردی که وارد شده رو بگیره؟!!از کجا تشخیص میده؟


اگر فقط ID یوزر رو نیاز داشته باشین خب اینطوری میتونید اصلاح کنید:
if (usersUtility.check_login(usersUtility.sanitize_Sq l(username), usersUtility.sanitize_Sql(password))) { FormsAuthentication.SetAuthCookie(userName, false);
Session["UserId"] = از دیتابیس بگیرین ;
Response.Redirect("Default.aspx");
}
هر جا هم لازم داشتین میتونید اینجوری واکشی کنید:
int userId = (int)Session["userid"];
اگر اطلاعات دیگه ای از کاربر نیاز دارین برای مثال اطلاتی مثل نام ، نام خانوادگی ، شناسه منحصر به فرد ، آخرین زمان بازدید و یا هر اطلاعات دیگه مرتبط با کاربر میتونید یک کلاس برای نگهداری این اطلاعات بسازید و در زمان لاگین کردن یک نمونه از کلاس ساخته و با اطلاعات کاربر پر کنید ، توی Session قرار بدین و هر جا لازم بود ازش استفاده کنید.

alireza_s_84
سه شنبه 25 فروردین 1394, 22:36 عصر
همین کد رو گذاشتم ولی بهم ارور داد و از نوعش ایراد گرفت اونو استرینگ کردم دقیقا همون دستور دیتا بیسم رو انتقال داد. دستوری که واسه گرفتن از دیتابیس نوشتم اینه: SELECT user_id FROM users
درسته این دستور؟

ولی به این روش چطوری میخواد آی دی همون فردی که وارد شده رو بگیره؟!!از کجا تشخیص میده؟

کمی بیشتر دقت کنید وقتی گفتم از دیتابیس بگیرین شما اصل قضیه رو نادیده گرفتین:
if (usersUtility.check_login(usersUtility.sanitize_Sq l(username), usersUtility.sanitize_Sql(password))) {
FormsAuthentication.SetAuthCookie(userName, false);
Session["UserId"] = GetUserId(username);
Response.Redirect("Default.aspx");
}

مثل من رشته رو اتصال ندین بلکه از شئی SqlCommand و پارامترهاش استفاده کنید ، فقط مثال زدم که متوجه بشین چطور Id کاربر رو واکشی کنید.

خب من یه متد نوشتم توی متد برای مثال میتونید همچین کوئری رو بنویسید:
private int GetUserId(string username){
var sql = "SELECT user_id FROM Users WHERE useranme = '" + username + "'";
}

اینا رو دیگه خودتون باید دقت کنید ، فکر نمیکنم چندان پیچیده باشه

shahram hosseini
چهارشنبه 26 فروردین 1394, 06:38 صبح
http://barnamenevis.org/showthread.php?489230-کد-بدست-آوردن-نام-کامپیوتر-کلاینت-ها-در-شبکه