PDA

View Full Version : مبتدی: چک کردن نام کاربری و رمز عبور



shahram176
جمعه 07 آذر 1393, 16:32 عصر
سلام
من میخوام با یک دستور نام کاربری و کلمه عبور را برای دو جدول اعضا و مدیریت چک کنم که اگه نام کاربری مال اعضا بود به صفحات مربوط به کاربرا بره و اگه نام کاربری مربوط به مدیر بود بره به صفحات مدیریت
این کار را چگونه انجام بدم؟

پیام حیاتی
جمعه 07 آذر 1393, 16:57 عصر
سلام
یک فیلد اختصاصی برای جدول ایجاد کنید مثلا" فیلد admin اگر مقدارش برابر 1 باشد کاربر جزء admin ها هست و به صفحه مدیریت منتقل بشه اگر مقدار 0 باشد کاربر از اعضاء هست و به صفحه مربوطه هدایت بشه.

saeed410
جمعه 07 آذر 1393, 17:01 عصر
سلام اگه از membership provide خود asp.net استفاده کردی میتونی از کد زیر استفاده کنی:

If Roles.IsUserInRole(UserName, "Admin")
Response.Redirect("~/Admin/Default.aspx");
Else Roles.IsUserInRole(UserName, "Users") Then
Response.Redirect("~/Users/Default.aspx");


یک مجموعه آموزشی کامل در این زمینه رو میتونی از لینک زیر مطالعه کنی:
http://www.4guysfromrolla.com/articles/120705-1.aspx

shahram176
جمعه 07 آذر 1393, 17:12 عصر
نه من هم برای مدیر و برای اعضا جدول ساختم

shahram176
جمعه 07 آذر 1393, 18:23 عصر
کد زیر را نوشتم
ولی جواب نمیده
string strConnection = WebConfigurationManager.ConnectionStrings["eshopConnectionString1"].ToString(); SqlConnection con = new SqlConnection(strConnection);
string strCmd = " select username,password from tUser where username=@u and password=@p";
SqlCommand cmd = new SqlCommand(strCmd, con);
SqlDataReader reader;
cmd.Parameters.AddWithValue("@u", TextBox4.Text);
cmd.Parameters.AddWithValue("@p", strp);
try
{
con.Open();


reader = cmd.ExecuteReader();
if (reader.Read())
{


Session["karbar"] = TextBox4.Text;
}


else
{
strCmd = " select username,password from tAdmin where username=@u and password=@p";
cmd = new SqlCommand(strCmd, con);
cmd.Parameters.AddWithValue("@u", TextBox4.Text);
cmd.Parameters.AddWithValue("@p", TextBox1.Text);


try
{
con.Open();


reader = cmd.ExecuteReader();
if (reader.Read())
{


Session["admin"] = TextBox4.Text;
}


else
{
Label1.Text = "چنین کلمه عبوری وجود ندارد";
con.Close();
return;
}


}

saeed410
جمعه 07 آذر 1393, 20:44 عصر
اول اینکه دوباره کانکشن باز کردی.یک بار کافیه. دوم اینکه شما دوتا جدول ساختی چرا هردوتاشم مث اینکه یوزر نیم و پسوورد دارد. این کار اشتباست یکم.از لحاظ ساختاری درسته ها .بهینه نیست. یک جدول ایجاد کن به نام users که فقط نام کاربری و رمز عبور داخلش باشه. یک جدولم میتونی واسه نقش ها تعریف کنی. که نقش های مختلف داخلش تعریف میشن. اسم این جدول بزار Roles یک جدول هم واسه ارتباط کاربران با نقش هاشون. اینجا ارتباط چند به چند داریم. اسم جدول رو میزاری UserInRoles . حالا قبل از هر چیز کاربر رو احراز هویت کن. اگه عضو بود و رمز عبورش درست بود بعد میتونی یک تابع دیگه تعریف کنی و نقش کاربر رو هم بهش اختصاص بدی.

shahram176
جمعه 07 آذر 1393, 20:47 عصر
اول اینکه دوباره کانکشن باز کردی.یک بار کافیه. دوم اینکه شما دوتا جدول ساختی چرا هردوتاشم مث اینکه یوزر نیم و پسوورد دارد. این کار اشتباست یکم.از لحاظ ساختاری درسته ها .بهینه نیست. یک جدول ایجاد کن به نام users که فقط نام کاربری و رمز عبور داخلش باشه. یک جدولم میتونی واسه نقش ها تعریف کنی. که نقش های مختلف داخلش تعریف میشن. اسم این جدول بزار Roles یک جدول هم واسه ارتباط کاربران با نقش هاشون. اینجا ارتباط چند به چند داریم. اسم جدول رو میزاری UserInRoles . حالا قبل از هر چیز کاربر رو احراز هویت کن. اگه عضو بود و رمز عبورش درست بود بعد میتونی یک تابع دیگه تعریف کنی و نقش کاربر رو هم بهش اختصاص بدی.
کد من را به صورت بهینه مینویسید؟

alizanganeh
یک شنبه 09 آذر 1393, 11:21 صبح
این که سادست.
واسه ی کاربر یک فیلدی مخصوص وضعیتش بذار . مثلا Status .
اگر 1 بود یعنی مدیره . اگر 0 بود یعنی کاربره .
در زمان ورود کاربر هم یک Session بساز و و مقدار اون فیلد رو بریزتوش . بعد توی Page Load صفحات چک کن که اگر مقدار اون Session یک بود ، فلان چیز رو نشون بده و اگر 0 بود فلان چیز .
به همین سادگی.

alizanganeh
یک شنبه 09 آذر 1393, 11:37 صبح
کدی که بالا نوشتی عجیبه . اینو بزن :


این یک تابع هستش که آخر کد هات بذارش . میدونی منظورم چیه دیگه:


protected void ExistsUser() {
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["ConnectionString"].ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT Status FROM tblLogin WHERE (Username=@Username) and (Password=@Password)";
cmd.Parameters.Add("@Username", SqlDbType.NVarChar, 50).Value = txtUser.Text;
cmd.Parameters.Add("@Password", SqlDbType.NVarChar, 50).Value = txtPass.Text;

con.Open();
SqlDataReader r = cmd.ExecuteReader();
if (r.Read())
{

Session["MyStatus"]=r[0].tostring();
}

con.Close();
}



اینم توی دکمه ورود کاربر :

if (txtUser.Text == "" || txtPass.Text == "")

ltrLoginMassage.Text = "نام کاربری و رمز عبور را وارد کنید";

else
{
ExistsUser();
if (Session["MyStatus"] == Null)
label1.text="نام کاربری یا رمز عبور اشتباه است" ;
else
{
if (Session["Mystatus"].tostring() == "مدیر")
{
//کارهایی که قراره برای مدیر انجام بشه
}
else
{
//کارهایی که قراره برای کاربر انجام بشه
}
}
}





البته 100% این یک کم و کاستی هایی داره که باید شما خودت بر اساس کارت بهش اضافه کنی . منظورم اطلاعات دیگه ای بجز فیلد Status که نیاز به پردازش توشون داری هستش .
امیدوارم به دردت بخوره