PDA

View Full Version : سطوح دسترسی در سیستم چند کاربره



SReza1
شنبه 10 اردیبهشت 1384, 20:18 عصر
یکی از عوامل مهم موفقیت در یک سیستم چند کاربره ایجاد بخشی به نام مدیریت کاربران است. از امکانات بخش معمولا ایجاد و یا حذف کاربر و تخصیص سطوح دسترسی به بخشهای مختلف است. روشهای مختلفی در این خصوص وجود دارد.
مثلا میتوانید یا ایجاد یک رشته از بیتها برای هر کاربر سطوح دسترسی مورد نظر را تخصیص داد. به نظرتون این روش ایراد داره؟ کسی پیشنهاد بهتر داره؟

Touska
شنبه 10 اردیبهشت 1384, 22:16 عصر
یک روش جالبتر اینکه به یک سری گروه سطح دسترسی بدی و بعد کاربران را در گروه ها معرفی کنید .

:flower:

hr110
شنبه 10 اردیبهشت 1384, 22:18 عصر
استفاده از XML میتونه تنها گزینه قابل استفاده شما باشد، علاوه براستفاده آسان در تغییرات و توسعه compatibility بالایی دارد.

Touska
شنبه 10 اردیبهشت 1384, 22:22 عصر
ای ولا Hr110 خیلی فکر باحالی بود به فکر من که نرسیده بود. :flower: :flower:

SReza1
سه شنبه 13 اردیبهشت 1384, 09:35 صبح
استفاده از XML میتونه تنها گزینه قابل استفاده شما باشد، علاوه براستفاده آسان در تغییرات و توسعه compatibility بالایی دارد.

خوب هدف من استفاده از متدهایی جهت سطوح دسترسی بود. بهر حال از طریق XML هم میباید پردازشهایی انجام شود. در داخل هر فرم چطور این کارها انجام شود! روش استفاده از if رو پیشنهاد میکنیم.

دنیای دلفی
سه شنبه 13 اردیبهشت 1384, 19:35 عصر
برای این کار یک کامپوننت جالب در سایت مجله دلفی معرفی شده .

می توانید به آنجا یک نگاهی بیندازید.
:flower:

net_ved
سه شنبه 13 اردیبهشت 1384, 20:44 عصر
com+
من خودم تو این وادی تازه وارد شدم ولی با اطمینان کامل بگم که....بالا ترین سطح امنیتو می تونین با این روش پیاده سازی کنید...البته استفاده های این تکلونوژی بیشتر از ایناست

SReza1
چهارشنبه 14 اردیبهشت 1384, 18:06 عصر
آدرس سایت مجله دلفی چیست؟

ببینید که من بحث تکنولوژی رو نمیخواهم مطرح کنم. اینکه از طریق XML میشود این کار رو کرد بله میشه! براحتی میشود لین کار رو در روی XML کرد و در زمان Run time هم استفاده کرد. نکته ای که من میخواهم بدونم استفاده از متدهای دسترسی به چه صورت است. مثلا استفاده از if های متوالی در زمان خواندن فرم است! :گیج:

m-khorsandi
چهارشنبه 14 اردیبهشت 1384, 20:01 عصر
درود
آقا آدرس سایت مجله دلفی رو به ما هم میگی!؟

عشق دلفی
پنج شنبه 15 اردیبهشت 1384, 12:45 عصر
سلام.

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


procedure SetMenuItem_Visibility(C:TMenuItem);
var
i: Integer;
begin
for i:=0 to C.Count-1 do
SetMenuItem_Visibility(C.Items[i]);

if C.Tag<>0 then
if FlagsList.IndexOf(IntToStr(C.Tag))>=0 then
C.Visible:= False;
end;


فعلا خداحافظ :موفق:

Touska
پنج شنبه 15 اردیبهشت 1384, 13:09 عصر
این روش رو من استفاده کردم بوسیله نرم افزاری د باگ میشه اونو هک کرد.

موفق باشید :flower:

SReza1
شنبه 17 اردیبهشت 1384, 18:35 عصر
سلام.

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


procedure SetMenuItem_Visibility(C:TMenuItem);
var
i: Integer;
begin
for i:=0 to C.Count-1 do
SetMenuItem_Visibility(C.Items[i]);

if C.Tag<>0 then
if FlagsList.IndexOf(IntToStr(C.Tag))>=0 then
C.Visible:= False;
end;


فعلا خداحافظ :موفق:


خوب بالاخره باید اون سطوح دسترسی تخصیص داده شود. این کار شما هم به یک نوعی از if استفاده میکنه! فکر کنم بهترین روش همون استفاده از XML است. هر فرم به صورت XML هم تعریف میشود. و در آن میتوان مقداردهی تمام objectها رو انجام داد :D