PDA

View Full Version : سوال: تعيين سطح دسترسي هنگام ورود نام كاربري و رمز عبور



Nil00 far
چهارشنبه 18 بهمن 1391, 20:02 عصر
سلام دوستان
كسي ميتونه بگه چطور بايد هنگام ورود نام كاربري و رمز عبور سطح دسترسي رو تعيين كنم ؟
اينكه بدونم مدير ميخواد وارد بشه يا كاربر عمومي

mousa1992
چهارشنبه 18 بهمن 1391, 20:12 عصر
سلام
ی کلاس باید داشته باشی که در صورت معتبر بودن اطلاعات وارد شده در فرم لاگین تمامی اطلاعاتی از کاربر که لازمه رو توی اون کلاس میریزی و بر اساسش تصمیم گیری ها رو انجام میدی
بطور مثال ی همچین چیزی

public class user
{
string userName;
.
.
.
public bool canDelete,canInsert,....
}
موفق باشی

uniqueboy_ara
چهارشنبه 18 بهمن 1391, 20:17 عصر
شما داخل دیتابیست ( مثلا جدول user ) به ازای هر قسمتی که دسترسی بهش ممکنه واسه افراد مختلف فرق داشته باشه یه فیلد از نوع bit در نظر بگیر و وقتی که میخوای کاربر جدید به سیستم اضافه کنی، مقدار اونهارو بنا به نوع کاربر برابر با true یا false قرار بدی
وقتی هم که کاربر میخواد login کنه مقادیر Enable اون منوها و یا کنترل های مورد نظر رو برابر Value ی ذخیره شده در دیتابیس برای اون بخش قرار بدید
خوبیه این روش اینه که میتونید برای هر کاربر به صورت مجزا سطح دسترسی تعریف کنید

Nil00 far
جمعه 20 بهمن 1391, 11:08 صبح
مرسی دوستان من یه کدی نوشتم فقط مشکلی که دارم اینه که تو این کد وقتی کاربر یا مدیر رو وارد میکنم هردوش توی یه فرم باز میشه شما میدونید مشکل چیه

string s = "select count(*) from student where Susername='" + this.UserTxt + "' and Spassword='" + this.PassTxt + "'";
string ss = "select count(*) from manager where Musername='" + this.UserTxt + "' and Mpassword='" + this.PassTxt + "'";
SqlConnection n = new SqlConnection("Data Source=.;Initial Catalog=languagecollege;Integrated Security=True");
n.Open();
SqlCommand cmd = new SqlCommand(s, n);
SqlCommand cmdd = new SqlCommand(ss, n);
SqlDataReader dr = cmd.ExecuteReader();


if (!dr.HasRows)
{
MainForm manager = new MainForm();
manager.ShowDialog();
dr.Close();

}
else
{

SqlDataReader drr = cmdd.ExecuteReader();
if (drr.HasRows)
{
student student = new student();
student.ShowDialog();
n.Close();
{
}

ma.rad
جمعه 20 بهمن 1391, 11:22 صبح
به نظر من کار درستی نکردید دوتا جدول برا کاربران قرار دارید
این کد

if (!dr.HasRows)

باید

if (dr.HasRows)


و else درست بسته نشده

bomb23
جمعه 20 بهمن 1391, 11:31 صبح
سلام به نظر من uniqueboy_ara درست میگه ، یه دیتا بیس قرار بدید و یه فیلد در نظر بگیرید مقدارشو bit در نظر بگیرد و اگه سطوح دسترسیتون بیشتر از 2 تا بود int یا مثلا char(2)در نظر بگیرید و مثلا برای مدیر مقدار 1 برای کاربر مقدار 2 برای نویسنده 3 و... قرار بدید و موقعی که select میکنید مقدار این فیلد رو چک کنید و با یه سوئیچ یا if بررسی کنید که کدوم سطحه!

Nil00 far
جمعه 20 بهمن 1391, 12:01 عصر
به نظر من کار درستی نکردید دوتا جدول برا کاربران قرار دارید
این کد

if (!dr.HasRows)

باید

if (dr.HasRows)


و else درست بسته نشده

همین کارم کردم باز نشد فکر میکنم اگه همونطور که دوستامون گفتن جدولمو تغییر بدم بهتر باشه

Nil00 far
جمعه 20 بهمن 1391, 12:02 عصر
سلام به نظر من uniqueboy_ara درست میگه ، یه دیتا بیس قرار بدید و یه فیلد در نظر بگیرید مقدارشو bit در نظر بگیرد و اگه سطوح دسترسیتون بیشتر از 2 تا بود int یا مثلا char(2)در نظر بگیرید و مثلا برای مدیر مقدار 1 برای کاربر مقدار 2 برای نویسنده 3 و... قرار بدید و موقعی که select میکنید مقدار این فیلد رو چک کنید و با یه سوئیچ یا if بررسی کنید که کدوم سطحه!

همین کارو انجام میدم اگه به مشکل برخوردم دوباره مزاحم میشم:چشمک: