PDA

View Full Version : گفتگو: تعیین سطح دسترسی برای کاربران



m.bibjan
دوشنبه 07 فروردین 1391, 03:32 صبح
تحلیل ایجاد سطح دسترسی برای نرم افزار یه بحثه

پیاده سازی اون تحلیل هم به صورت کد نویسی یه بحثه دیگه

توی جستجوها و ایجاد تاپیک و بی نتیجه مانده هردو به این نتیجه رسیدم که بیشتر اقایون تحلیلشون رو بیشتر از پیاده سازی به اشتراک گذاشتن.

اقا یکمی هم از پیاده سازی بصورت کد نویسی بگین.
یه کلاس سطح دسترسی گذاشتم فقط یه خط کد نیاز داشت حل بشه.ولی کس نیومد جواب بده و ماهم مجبور شدیم حذفش کنیم.
یه اموزشی یه نمونه و .... بذارین که حداقل به یه نتیجه برسیم.


البته محتوای این تاپیک تکراری هستش و با این تفاوت که در قالب گلایه هستش.
اگه اقایون یه مطلب اموزشی بگذارند خیلی لطف کردند.البته اگه حذف نشه

mahan.2002
دوشنبه 07 فروردین 1391, 04:09 صبح
سلام
دوست عزیز برای سطح دسترسی شما به یک جدول کار بران نیاز دارید که مشخصات کابران درون نگهداری می کنید که درون شما یک فیلدی برای این تعریف دسترسی میکنید.. خب همین .
و کار بعدی هم اینکه توی نرم افزارتون قبل از انجام هر کاری مثلا باز شدن ویرایش صفحه مشخصات کاربران یا حذف نامه ها یا مثلا .. تغییر ترتیب نامه ها و یا هر کار دیگه ای که میخواهید برای اون کار ها کاربران تقسیم کنید یا نظم بدید که بدونید کدوم کاربران به چه داده های باید دسترسی داشته باشن و خودتون هم برای ترتیب کار از اون استفاده کنید ..
و تنها زمانی که کاربر میخواد عملی رو انجام بده چک میکنید که ایا این کاربر با این مشخصات قادر به استفاده از این عملیات هست یا نه ...

m.bibjan
دوشنبه 07 فروردین 1391, 04:16 صبح
ممنون از زاهنمایی
من جدول رو طراحی کردم ، مشکلی ندارم ولی توی کدنویسی مشکل دارم.راه و روش ساخت جدول برای سطح دسترسی رو هم بلدم فقط تو کدنویسیش مشکل دارم.اگه از حیث کد نویسی راهنمایی کنید ممنون میشم

m.bibjan
دوشنبه 07 فروردین 1391, 10:34 صبح
کسی نیست بلد باشه؟

m.bibjan
دوشنبه 07 فروردین 1391, 13:01 عصر
یعنی هیچ کس به مبحث ایجاد سطح دسترسی برخورد نکرده و درگیرش نشده ؟
اساتید چی ؟

headshoter
دوشنبه 07 فروردین 1391, 14:32 عصر
سلام !! من که تاپیک واسه این سوال زده بودم بعد خودتون تو تاپیک من به من یه فیلم معرفی کردید !! چرا از همون استفاده نمیکنید؟!

m.bibjan
دوشنبه 07 فروردین 1391, 14:36 عصر
سلام من این کلاس رو واسه ایجاد سطح دسترسی درستش کردم میخواستم ببینم مشکلش کجاست.
البته طراحی جدولش هم مشکلی نداره.فقط مشکل این رو حل کنید ممنون میشم.
خواهشا یکی بیاد ما رو نجات بده.
فقط اگه جنبه اموزشی هم توش لحاظ بشه ممنون میشم.

m.bibjan
دوشنبه 07 فروردین 1391, 14:40 عصر
اخه استفاده کردم با استفاده از همون این کلاس بالایی رو نوشتمش ولی به یه پیش نیازی انگار احتیاج داشته که من نفهمیدم اون پیش نیاز رو چطوری باید لحاظ کنم .شما تونستین فیلم رو پیاده سازیش کنین؟

Yanehsar
دوشنبه 07 فروردین 1391, 14:45 عصر
سلام تایپک قبلیتون دیدم منم از همین کدها استفاده میکنم و مشکلی نداره نمونه کد میذارم ببین
یه کلاس میسازم شامل این کدها


OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "/telDB.mdb");
OleDbDataAdapter da = new OleDbDataAdapter();
DataSet ds = new DataSet();
DataView dv = new DataView();
public bool canuser(string name)
{
con.Open();
string sql = "select count(*) from serial where uname='{0}'";
sql = string.Format(sql, name);
da = new OleDbDataAdapter(sql, con);
con.Close();
da.Fill(ds, ("serial"));
dv.Table = ds.Tables["serial"];
bool loging = true;
if (dv[0][0].ToString() != "0")
{
loging = false;
}
return loging;

}


داخل فرمی که اطلاعات از کاربر میگیرم تا بیاید داخل همون سطوح دسترسی که داخل دیتا بیس تعریف کردیم یه عنوان متغییر از نوع بایت تعریف میکنیم


byte mokhatabin;
byte search;
byte paye;
byte report;
byte seting;
byte edit;
byte delete;

در مرحله بعد این فیلدها رو از یانکمون پر میکنیم


serial seriallogin = new serial();
if (seriallogin.canlogin(txtname.Text, txtpass.Text) == true)
{
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "/telDB.mdb");
OleDbDataAdapter da = new OleDbDataAdapter("select * from serial where uname='"+txtname.Text+"' and upass='"+txtpass.Text+"'",con);
DataSet ds = new DataSet();
DataView dv = new DataView();
da.Fill(ds,"serial");
dv.Table=ds.Tables["serial"];
mokhatabin = Convert.ToByte(dv[0]["mokhatabin"]);
search = Convert.ToByte(dv[0]["search"]);
paye = Convert.ToByte(dv[0]["paye"]);
report = Convert.ToByte(dv[0]["report"]);
seting = Convert.ToByte(dv[0]["seting"]);
edit = Convert.ToByte(dv[0]["edit"]);
delete = Convert.ToByte(dv[0]["del"]);

البته این کدهای بالا به همراه تشخیص درست بودن نام و رمز عبور هستش.
حالا فیلدهای ما پر شده فقط میمونه استفاده از اونا که وقتی فرم دوم باز میشه Enabled گزینه های دسترسیتو مساوی میذاریم با اون متغییر بایت مثلا:


payehToolStripMenuItem.Enabled = Convert.ToBoolean(paye);
reportToolStripMenuItem.Enabled = Convert.ToBoolean(report);
setingToolStripMenuItem.Enabled = Convert.ToBoolean(seting);
searchToolStripMenuItem.Enabled = Convert.ToBoolean(search);
mokhatabinToolStripMenuItem.Enabled = Convert.ToBoolean(mokhatabin);


اگه متوجه نشید بگید تا یه نمونه برنامه بذارم

m.bibjan
دوشنبه 07 فروردین 1391, 15:29 عصر
ممنون از پاسختون
اگه نمونه برنامه رو هم بذارین ممنون میشم.

masoudmok
دوشنبه 07 فروردین 1391, 20:46 عصر
سلام
من از یه روش ساده کمک گرفتم
توی یکی از برنامه هام به 17 .. 18 تا آپشن نیاز داشتم که قرار بود هر کاربری که login می کنه بتونه یا نتونه به این 18 مورد دسترسی داشته باشه
موقع ساختن کاربر با چک باکس مشخص کردم هر کاربر دسترسی داره یا نه
همراه کاربر توی جدولم یه رشته ی متشکل از صفر و یک ذخیره کردم . هر کدوم از ارقام نشون میدن که دسترسی هست یا نیست . مثلا 100011010010
فرض کن رقم اول تغییر رمز عبوره . چون مقدارش یکه پس دسترسی داره .
وقتی کاربر لاگین میکنه این رشته رو از دیتابیس می خونم و به فرم ها پاس می دم . هر فرم اون قسمت از داده رو که می خواد چک می کنه و اجازه دسترسی میده .
چقدر حرف زدم !!!

m.bibjan
دوشنبه 07 فروردین 1391, 21:16 عصر
حرف علمی باشه زیادش هم کمه
فقط اگه توی پیاده سازیش ویا نمونه برنامه ایی کمک کنید ممنون میشم.

ممنون

Yanehsar
دوشنبه 07 فروردین 1391, 22:50 عصر
سلام
این هم نمونه برنامه نتونستم تو خود برنامه نویس آپلود کنم
http://up98.org/upload/server1/02/g/rawp4973ju3ovjenzc.rar
اگر مشکل داشتید بگید.
البته یه روش دیگه هم هستش که یه فیلد میذارن به شامل اعداد صفر و یک میشه مثلا 110011121001
در هنگام برنامه نویسی این رشته رو جدا کرده و سپس استفاده میکنیم البته من از این روش استفاده نکردم تا حالا

نام کاربری:yanehsar
رمز عبور:1234

masoudmok
سه شنبه 08 فروردین 1391, 00:16 صبح
مثلا :
84735

omidamiry
سه شنبه 08 فروردین 1391, 00:42 صبح
برنامه نویسی خیلس ساده است اگر حودت ساده ببینیش. چرا کاره خودتو سخت می کنی یه فیلد بزار که سطح دسترسی رو با عدد مشخص کنه تو منوها قبل نیو کردن فرم جدید اول چک کن که اجازه داره یا نه نداشت فرم باز نکن یا یه بانک درست کن و برای هر دسترسی نام فرماشو ذخیره کن تا طبق اطلاعات موجود در بانکت فرم هارو باز کنی که روش دوم سخت نیست کار می بره باز هم سوال داشتی بپرس

m.bibjan
سه شنبه 08 فروردین 1391, 02:07 صبح
سلام ممنون از جواب دوستان
اخه میخوام یه راه استاندارد باشه و مطمئن از حیث کدنویسی
حالا اولا نمیدونم کدوم راه استانداره و کدوم غیر استاندارد
یکی از اساتید دوستان طراحی بانک پیشنهاد رو داده بودن
حالا اگه به طور کلی بگین که کدوم راه استاندارده ممنون میشم البته با توضیح
حالا با روش طراحی بانک من یه نمونه برنامه نوشتم
ولی یه مشکلی داره اگه تصحیحش کنید ممنون میشم.

NiMble_m
سه شنبه 08 فروردین 1391, 03:18 صبح
بیا عزیزم درست شد
الان نام کاربری و پسورد وارد کن نتیجه رو ببین

m.bibjan
چهارشنبه 09 فروردین 1391, 11:21 صبح
سلام
ببخشید این نمونه برنامه بالا و این نمونه برنامه ایی که میذارم رو اگه بخوایم تلفیقش کنیم چی کار باید بکنیم؟
یعنی امکاناتی که توی این دو برنامه هستش رو چطوری باید توی یه برنامه جای داد و ازش بشه استفاده کرد؟
البته اگه بخوایم تلفیقش کنیم به نظرتون منطقی هست ؟؟؟

m.bibjan
چهارشنبه 09 فروردین 1391, 17:16 عصر
کسی نیست جواب بده خودم هر کاری کردم نتونستم.
اگه یه کسی لطف بکنه ممنون میشم.

masoudmok
پنج شنبه 10 فروردین 1391, 00:20 صبح
روششو که گفتم بهت . خیلی سادس . سمپل منو چک کن

m.bibjan
پنج شنبه 10 فروردین 1391, 10:57 صبح
سلام
ممنون چک کردم ولی منظورم استفاده از بانک بود.اگه راهنمایی کنید ممنون مشم

m.bibjan
پنج شنبه 10 فروردین 1391, 14:20 عصر
سلام کسی دو برنامه رو تلفیقش نکرده که بفهمم چیکار کرده.
کسی نیست ؟

m.bibjan
پنج شنبه 10 فروردین 1391, 20:43 عصر
سلام حداقل اگه بگین جدول چطوری طراحی بشه واسه کمترین تغییر توی کد نویسی ممنون میشم.

masoudmok
جمعه 11 فروردین 1391, 00:03 صبح
سلام .
هنوز که درگیر این مسئله این !
اگه منظورت سمپل منه میتونه اون رشته ی 0 و 1 رو مثل یه اسم از نوع char به طولی که لازم داری توی جدولت قرار بدی .
مثلا یه جدول داشته باشی با این ساختار : - نام کاربری - نام نمایشی - کلمه عبور - رشته دسترسی
که رشته دسترسی همون 0 و 1 هاست .

m.bibjan
جمعه 11 فروردین 1391, 03:49 صبح
ممنون این کار رو انجام دادم بازم نتونستم اگه بیشتر راهنماییم کنید ممنون میشم.

masoudmok
جمعه 11 فروردین 1391, 10:50 صبح
سلام .
اگه وقت شد حتما این کارو میکنم . میفرستم واست

m.bibjan
دوشنبه 14 فروردین 1391, 13:23 عصر
سلام کسی نیست این دو برنامه رو تلفیقش کنه.خیلی گیر افتادم.
ممنون

Yanehsar
دوشنبه 14 فروردین 1391, 14:25 عصر
سلام
مشکلت چیه؟با اون کدها و نمونهبرنامه ای که دادم بهت مشکلت حل نشد مگه؟توضیح بده میخواهی چیکار کنی تا راهنمائیت کنم

m.bibjan
دوشنبه 14 فروردین 1391, 18:26 عصر
سلام ممنون
میخوام یه فرم لاگین درست کنم که :
1 - هم سطح دسترسی داشته باشه البته بوسیله جدول
2 - هم امکان اینکه اگه کاربر یوزر وپسوردش یادش رفت اول بتونه بوسیله سوال و جواب امنیتی یوزر و پسوردش رو بازگردانی کنه از جدول به تکس باکس و دوم اینکه بتونه تغییرش بده
البته من ( وعنایت دوستان ) دوتا امکان رو توی دو تا نمونه برنامه جدا درست کردم ولی حالا میخوام دوتا امکان رو توی یه برنامه داشته باشم و البته بازم با جدول . چون شنیدم روش استانداردیه.

m.bibjan
سه شنبه 15 فروردین 1391, 11:33 صبح
سلام کسی نمیخواد بیاد این دوتا سمپل رو تلفیقش کنه؟

m.bibjan
چهارشنبه 16 فروردین 1391, 11:51 صبح
سلام از اساتید کسی نیست این مشکل ما رو حل کنه؟

m.bibjan
پنج شنبه 17 فروردین 1391, 15:04 عصر
سلام کسی بلد نیست مشکل من رو حل کنه؟

یا وقت ندارین؟