PDA

View Full Version : ایجاد دسترسی کاربران



حسین خانی
جمعه 02 مرداد 1388, 14:03 عصر
سلام به دوستان :لبخندساده:
در پروژه ای میخوام برای کاربران مجوز دسترسی تعیین کنم به این صورت که کاربر admin بتونه بافعال یا غیر فعال کردن خصوصیت Enabled آیتم های منو برای هر کاربر دسترسی ها رو نسبت به کاربر Login شده محدود کنه !
لطفا راهنمایی کنید چکار کنم .

Felony
جمعه 02 مرداد 1388, 19:08 عصر
یه دستابیس با فیلدهایی از قبیل ( نام کاربر ، دسترسی به منوی 1 ، دسترسی به منوی 2 و ... ) رو تعریف کنید ، حالا تو برنامه هر یوزری رو که تعریف کردین تو دیتابیس میزان دسترسیش رو اضافه کنید ( تو یه رکورد ) مثلا :


User : Test
Menu1 : True
Menu2 : True
Menu3 : False

حالا موقع وارد شدن کاربر بر اساس نام کاربری وارد شده فیلدهای مشخصات کاربر رو بخونید و شئ های مورد نظر رو فعال یا غیر فعال کنید .

mohammad_alikhani
جمعه 02 مرداد 1388, 23:08 عصر
یه دستابیس با فیلدهایی از قبیل ( نام کاربر ، دسترسی به منوی 1 ، دسترسی به منوی 2 و ... ) رو تعریف کنید ، حالا تو برنامه هر یوزری رو که تعریف کردین تو دیتابیس میزان دسترسیش رو اضافه کنید ( تو یه رکورد ) مثلا :


User : Test
Menu1 : True
Menu2 : True
Menu3 : False

حالا موقع وارد شدن کاربر بر اساس نام کاربری وارد شده فیلدهای مشخصات کاربر رو بخونید و شئ های مورد نظر رو فعال یا غیر فعال کنید .
البته من ديدم كه خيلي ها از اين روش استفاده مي كنند كه 100% البته مشكلات خاص خودش رو داره.
مثلا اگه 100 تا منو داشته باشي بايد 100 تا ستون براي جدولت بسازي. بعد مثلا فقط مي توني دسترسي ايجاد كني كه به فلان فرم دسترسي باشد يا نه. اما ممكن است بر روي Action ها مانند (جديد، ويرايش، حذف) هم كنترل لازم باشد. اگر هم خواستي از اين روش استفاده كني بهتره به اين صورت كار كني:

1- يك جدول بساز براي Action ها و Form هات:



Table Actions
ActionId
ActionTitle


بعد يك جدول براي مشخص كردن دستري هر كاربر به هر عمليات:



Table UserAction
UserId
ActionId
View?
Insert?
Edit?
Delete?


براي راحتي كار هم مي توني ActionId ها رو به عنوان Tag منو ها بذاري و بعد با يك دستور تمامي اون رو كنترل كني.

حسین خانی
یک شنبه 04 مرداد 1388, 16:50 عصر
با تشکر از توجه دوستان به این تایپیک !
ممنون میشم مثالی تو محیط دلفی بیاورید! :لبخندساده:

حسین خانی
دوشنبه 05 مرداد 1388, 09:05 صبح
سلامی دیگر به دوستان ، ممنون از راهنمایی خوبتان !

یه نمونه انجام دادم ولی جواب نگرفتم اشکالو پیدا نمیکنم . آپلود کردم به آدرس :


http://www.4shared.com/file/120810265/753c9f94/Test_Access.html


از دوستان اگه کسی زحمت کشید ایراد و پیدا کرد ممنون میشم به doustane@gmail.com برام ارسال کنه !

Ahmad Chehreghani
دوشنبه 05 مرداد 1388, 15:47 عصر
سلامی دیگر به دوستان ، ممنون از راهنمایی خوبتان !

یه نمونه انجام دادم ولی جواب نگرفتم اشکالو پیدا نمیکنم . آپلود کردم به آدرس :

http://www.4shared.com/file/12081026...st_Access.html

از دوستان اگه کسی زحمت کشید ایراد و پیدا کرد ممنون میشم به doustane@gmail.com برام ارسال کنه !


اولين چيزي که من در برنامه شما با اون برخورد کردم پيغام Login بود که براي نمايش ندادن اون بايد LoginPrompt مربوط به ADOConnection را False کنيد.

در مورد Login کاربر در اين پست توضيح داده شده
http://www.barnamenevis.org/forum/showthread.php?t=151946
http://www.barnamenevis.org/forum/showthread.php?t=154977
در مورد دسترسي کاربران هم قرار نيست شما يکي يکي کاربران را چک کنيد، کد زير براي شماست


if Flogin.acc = 'admin' then
begin
Fmain.page1.Enabled:=True;
Fmain.page2.Enabled:=True;
Fmain.page3.Enabled:=True;
Fmain.page4.Enabled:=True;
Fmain.pmojavez.Enabled:=True;
end ;
if Flogin.acc = 'monshi' then
begin
Fmain.page1.Enabled:=True;
Fmain.page2.Enabled:=False;
.
.

يکي از راحت ترين کارها اينه که شما براي هر کاري يک فيلد توي ديتابيس درست کنيد;مثلا براي منوي پشتيبان گيري ، فيلد Poshtiban و براي منوي بازيابي ، فيلد Restore و ...(نوع رکوردها را يا Bit بزاريد يا Yes/No)
براي چک کردن دسترسي ها، بعد از اينکه نام کاربري و رمز تاييد شد کد زير را مي نويسيد


Form1.M_poshtiban.visible:=Adotable1Poshtiban.valu e;
Form1.M_restore.visible:=Adotable1restore.value;

در لينک هايي که دادم از Locate استفاده شده. وقتي شما با Locate به دنبال مقدار مشخصي هستيد، بعد از يافت رکورد نشانگر روي رکورد مورد نظر مي رود و دستورAdotable1restore.value مقدار فيلد restore همان رکورد را نمايش مي دهد.
--------------------------------------------------------
به نظر من هم بهتره که از Action ها استفاده کنيد.

اگر دسترسي هاتون به شکل True/False هستش مي تونيد از راه هاي ديگه اي هم استفاده کنيد مثلا يک عدد را در بانکتون ذخيره کنيد. اين به شما اين امکان را ميده که به تعداد بيت هاي دودويي عدد حق دسترسي تعريف کنيد
به عنوان مثال عدد 255 داراي 8 بيت 1 است(11111111) يعني 8 منوي ما فعال است. حالا براي کاربر منوي دوم را مي بنديم. پس بايد معادل عدد دودويي 11111101 يعني عدد 253 در بانک ذخيره شود.

موفق باشيد.

azam2005
یک شنبه 17 اردیبهشت 1391, 19:16 عصر
با سلام
اگر بخواهید روی سطر های خاص هم مجوز دهید چکار می کنید؟
مثلا اگر بخواهید یک کاربر پس از ورود به سایت امکان ویرایش - مشاهده - حذف و ... رکوردهای خاصی را داشته باشد مثلا :

1-همه رکورد های یک جدول را
2- رکوردهایی که خودش ثبت کرده
3-رکوردهای که پرسنل ثبت کرده
4- رکوردهایی که همکار ثبت کرده و ...