PDA

View Full Version : سوال: تعیین سطح دسترسی



ابراهیم1
یک شنبه 08 آبان 1390, 15:25 عصر
با سلام
من میخوام یک برنامه بنویسم که دارای تعداد منو (که دارای زیر منوهایی هستند)باشد و کاربران با سطوح دسترسی متفاوت تعیین کنم زمانی که مدیر برنامه میخواهد اطلاعات کارمندی را save کند در این فرم مشخص کند این کاربر حق دارد چه منوها وچه زیرمنوهایی را ببیند حالا در زمانهای بعد که کارمند با user,pass خود وارد سیستم میشود فقط آن منوها و زیر منوهایی را میبیند که مدیر برایش انتخاب کرده است(منظورم این است که نمیخواهم صفحه فرم برای تمام کاربران یکسان باشد مثلا برای یک کار بر با منوها و زیر منوها بیشتر و برای افراد دیگر براساس پستشان کمتر می شود)من میخواهم کارمند زمانی که وارد سیستم میشود فقط منوهای اجازه داده شده را ببیند و نه اینکه منوها باشند و ما به او اجازه دسترسی ندهیم (یعنی فرم به صورت یک صفحه پویا باشد نه ایستا که برای تمام کاربران یکسان باشد)در پایان ازمیخواستم بدونم که ایا شما برنامه ای یا ایده برای پیاده سازی این مورد دارید با تشکر

asif1358
یک شنبه 08 آبان 1390, 15:57 عصر
سلام
فکر کنم باید در زمان اجرا منوها را اضافه کنید؛ راه دیگر ذخیره انواع کاربران (نقش ها) در یک جدول و سپس هنگام نمایش فرم بررسی کنید اگر کاربر متعلق به فلان گروه نیست، فلان آیتمهای منو مخفی باشد.

sobaisobai
یک شنبه 08 آبان 1390, 16:01 عصر
سلام
به نظر من شما میتونید چندتا متد داشته باشی که هر متد مختص یه نوع از کاربر هست مثلا(Admin,User,Guest)
بعد هر کدوم از متدها یه سری کار انجام میدن.مثلا برای Admin تمامی کنترل های فرم قابل مشاهده است و برای User فقط قسمتهایی از برنامت و ........
بعد با توجه به نوع کاربر میتونی متدها رو فراخوانی (OverLoad )کنی
نوع کاربر هم میتونی هنگام ثبت کاربر مشخص کنی که از چه نوعی هست
امیدوارم مفید بوده باشه

ali reza mansoori 2
یک شنبه 08 آبان 1390, 16:11 عصر
ساده ترین کار اینه که به تعداد منو ها داخل فرم ذخیره مشخصات کارمند، چک باکس بزاری و این مقادیر رو داخل بانکت ذخیره کنی
بعد که کاربر وارد شد اولین کاری که انجام میدی اینه که مقادیر رو چک میکنی و به ازای هر کدام از مقادیر منوی مربوطه را غیر فعال میکنی

ابراهیم1
دوشنبه 09 آبان 1390, 18:38 عصر
با سلام
از مسئولان سایت خواهش میکنم با وجود تکراری بودن سوال بزارید ببینیم کس دیگه ایده یا بر نامه مانند این داره با تشکر فراوان از شما
من میخوام یک برنامه بنویسم که دارای تعداد منو (که دارای زیر منوهایی هستند)باشد و کاربران با سطوح دسترسی متفاوت تعیین کنم زمانی که مدیر برنامه میخواهد اطلاعات کارمندی را save کند در این فرم مشخص کند این کاربر حق دارد چه منوها وچه زیرمنوهایی را ببیند حالا در زمانهای بعد که کارمند با user,pass خود وارد سیستم میشود فقط آن منوها و زیر منوهایی را میبیند که مدیر برایش انتخاب کرده است(منظورم این است که نمیخواهم صفحه فرم برای تمام کاربران یکسان باشد مثلا برای یک کار بر با منوها و زیر منوها بیشتر و برای افراد دیگر براساس پستشان کمتر می شود)من میخواهم کارمند زمانی که وارد سیستم میشود فقط منوهای اجازه داده شده را ببیند و نه اینکه منوها باشند و ما به او اجازه دسترسی ندهیم (یعنی فرم به صورت یک صفحه پویا باشد نه ایستا که برای تمام کاربران یکسان باشد)در پایان ازمیخواستم بدونم که ایا شما برنامه ای یا ایده برای پیاده سازی این مورد دارید شما برنامه ای را که این قابلیت را پیاده سازی کرده باشه دیده اید من یک فایل که با این قابلیت نوشته شده را ببینم و ببینم که چطوری این برنامه را نوشتند با تشکر

sadra1234
چهارشنبه 30 آذر 1390, 11:55 صبح
سلام
دوست گرامی برای اینکار می تونی برای کاربران سطح دسترسی ایجاد کنی و بعدش برای هر سطح دسترسی فرم اصلی رو مختص اون سطح طراحی کنی با منوهای خودش (مثلا سطح 0 و1و2)، وقتی کاربر وارد میشه فرم مخصوص خودش رو ببینه
این نظر شخصی من هست و خالی از ایراد هم نیست

mehdi.fni
چهارشنبه 30 آذر 1390, 12:11 عصر
من پیشنهاد میکنم یک table درختی ایجاد کن و از tree استفاده کن
فایده اینکار اینه که همیشه میشه سطوح دسترسی را خودت تعریف کنی و یا مسئول سیستم و دیگه اینکه با چک باکس گذاشتن و ایمیج گذاشتن نمایش ستوه دسترسی را داشته باشی و .....

alireza_wills
چهارشنبه 30 آذر 1390, 12:49 عصر
سلام

من تو یه برنامه اومدم تمام اشیاء فرمم رو تو treeview نوشتم. تو برنامه admin میاد برای افراد از این treeview استفاده میکنه و برای هرکسی چک باکس treeview رو تیک میزنه. برای تمام اونایی که تیک میزنه 1 و برای اونایی که نمیزنه صفر میگیره مثلاً 01101111011101111110. بعدش این string رو میفرستم تو آرایه . بعدش با یه for میگم اگر خونه 1 ارایه 0 بود نبینه و تا آخر....

zarrinnegar
چهارشنبه 30 آذر 1390, 13:55 عصر
من برای این کار توی برنامه چند تا جدول دارم
1 - نرم افزار ها
2 - گروه های کاربران
3 - گروه کاربران و نرم افزار ها
4 - کاربران
5 - منوها
6 - منوها و کاربران
7 - سوالات امنیتی
8 - لاگ و هیستوری کاربران


1 - توی این جدول انواع نرم افزار هایی رو که بصورت پورتال تهیه میشه لیست میکنم ( مثلا حسابداری - انبارداری - حقوق و دستمزد و ...)
2 - اینجا گروه های کاربران رو میسازم ( مدیران سیستم - کاربران عادی - اپراتور ها - گزارش نویس ها و ...)
3 - برای هر گروه کاربران تعیین میکننم که به چه نرم افزاری دسترسی داشته باشند تا توی هر نرم افزار یک کاربر ایجاد نکنم ( مثلا یک کاربر دارم که هم حسابداری کار میکنه و هم حقوق و دستمزد که در این صورت 2 تا نام کاربری بهش نمیدم)
4 - کاربران رو تعریف میکنم
5 - منوهای برنامه رو توش تعریف میکنم
6 - به تعداد هر گروه کاربری منوها رو اضافه میکنم با 6 فیلد نمایش و حذف و ایجاد و اصلاح و چاپ و جستجو ( برای اینکه بعدا بیام و بگم کدوم منو رو این گروه کاربر ببینه یا بتونه ایجاد دیتا کنه و ... که ار نوع bit هستند)
7 - یه سری سوالات امنیتی هم میزارم که باز توسط کاربر مدیر سیستم قابل ویرایشه برای زمانی که کاربر رمزش رو یادش بره و هی به مدیر سیستم مراجعه نکنه که من رمزم چی بود خودش بتونه رمزش رو پیدا کنه
8 - هر کاربری که وارد سیستم میشه تا زمان خروجش از کارهاش لاگ میگیرم و به مدیر سیستم بعدا نشون میدم (البته لاگ رو هم نمیزارم تا حداقل 1 سال حتی مدیر سیستم پاک کنه آخه ممکنه مدیر سیستم هم تبانی کنه و یه چیزایی رو تغییر بده و بخواد لاگش رو هم پاک کنه و بندازه گردن دیگران)

بعد میام یه view میسازم از شماره 3 و 4 و کاربری رو که لاگین کرده منوهاشو فیلتر میکنم بر اساس نمایش = true ( حالا اگه 40 تا منو داشته باشم و کاربر اپراتور من به 15 منو دسترسی داشته باشه همون 15 تا منو نمایش داده میشه)
بعدش یه function هم میسازم که user و نام فرمم رو بهش پاس میدم به من میگه true یا false که بعدش میگم میتونی رکورد وارد کنی یا چاپ کنی یا ... و یا نمیتونی


شاید خیلی ها نظرشون این باشه که چرا این همه راه
ولی من با این روش تونستم نرم افزار 100 کاربره رو به راحتی کنترل کنم

البته ممکنه روشهای دیگه ای که ساده تر باشه و راحتتر ، پیدا کرد ولی من این روش رو از asp 2010 خود ویژوال یاد گرفتم یه کمی هم بهش اضافه کردم

امیدوارم بدرد بخوره

linux
چهارشنبه 30 آذر 1390, 14:36 عصر
این سوال قبلا خیلی وقت پیش مطرح شده بود،
بستگی به کاری که می خواهی انجام بدهی می توانی خیلی آسان بگیری یا خیلی پیچیده تر کنید.
جداول زیر را نیاز خواهی داشت،
1-کاربران
2-فعالیتها
3- کاربران فعالیتها
این سه جدول حداقل هست. بجای اینکه دسترسی یه فلان منو را در نظر بگیری، اینجوری فکر کنید، برنامه شما چند نوع کار انجام می دهد، این ها می شوند فعالیتها و دستان خودتان هست که هر چقدر که می خواهید ریز کنید.
در ساده ترین حالت فرض کنید شما این فعالیتها را دارید، نمایش، افزودن، ویرایش ، حذف. حال می توانید ریزتر ببنید، مثلا برای هر فرم فعالیتهای خودش را ریز تر ببنید،
حال قبل از نمایش یک فرم یا انجام یک عملیات شما با یک دستور می توانید کنترل کنید که چه باید انجام دهید