PDA

View Full Version : سوال: نحوه مفید احراز هویت و دادن مجوزهای دسترسی



vahid dot net
یک شنبه 15 شهریور 1388, 09:43 صبح
با سلام
من تازه کار رو با ASP‎‎.Net شروع کردم . در سایتی که تازه شروع به طراحی اون کردم (و مثل خیلی از سایت های دیگه) دارای قسمت هایی مثل ورود کاربر و تشخیص هویت کاربر(Authentication)، مدیریت کاربران مانند تعریف نقش (Role) ، دادن نقشهای متفاوت به کاربران ، دادن مجوزهای دسترسی گوناگون به هر نقش و تعریف Profile برای هر کاربر هست . در مورد نحوه انجام این کارها کتابها و مقالات متفاوتی رو مطالعه کردم همچنین در بین تاپیک های سایت هم جستجو کردم
در مورد نحوه احرازهویت متوجه شدم که با استفاده از احراز هویت نوع Form و استفاده از FormsAuthentication میشه اینکار رو کرد و با انجام این قسمت مشکلی ندارم اما در مورد نحوه تعریف Role ها و تعریف هر کاربر در یک Role و تعریف مجوز دسترسی به هر Role و profile مربوط به هر کاربر مطلب مفیدی پیدا نکردم .حال از شما اساتید محترم یک راه حل مناسب با توجه به کارایی و امنیت سایت بعد از Upload برای مشکل فوق خواستارم . لطفا راه حل های متفاوت را مطرح و علت استفاده از بهترین راه رو بیان کنید.
با تشکر .

vahid dot net
یک شنبه 15 شهریور 1388, 12:22 عصر
کسی نیست بتونه به من کمک کنه:متفکر:

z_bluestar
یک شنبه 15 شهریور 1388, 12:39 عصر
بايد احراز هويت و تعريف Role رو با Database مديريت كنيد كه موقعي كه سايتتون Publish شد بتونيد به آنها دسترسي داشته باشيد و مديريت كنيد .
در ASP.net تعريف Role ها و User ها محدود است و بايد تمام User تون رو تو Config file به صورت Hard Code وارد كنيد .
ولي با DataBase مي تونيد با تعريف جدول هاي كاربران ، پروفايل كاربران ، حق دسترسي ها و نوع كاربران اين كاررو كاملا به مديريت كنيد . يه نمونه شو براتون مي ذارم

http://barnamenevis.org/forum/attachment.php?attachmentid=36436&d=1252177600
http://barnamenevis.org/forum/attachment.php?attachmentid=36420&d=1252149417

vahid dot net
یک شنبه 15 شهریور 1388, 13:24 عصر
با تشکر
اولا فایل فوق رو که اجرا کردم ارور داد
ثانیا توی کد نویسی (C#‎‎‎‎‎) باید چطوری کارکرد .لطفا بیشتر توضیح بدین و اگه ممکنه یک نمونه برنامه رو بدین . ممنون

z_bluestar
یک شنبه 15 شهریور 1388, 14:20 عصر
من از version 2008 استفاده ميكنم errore به خاطر همينه

Script تشو براتون گذاشتم
36463

vahid dot net
یک شنبه 15 شهریور 1388, 14:28 عصر
باز هم ممنون
اما در کد نویسی چطور کاربران و role ها رو مدیریت کنیم ؟

z_bluestar
یک شنبه 15 شهریور 1388, 14:33 عصر
خوب ما يه جدول كاربران داريم كه شامل اطلاعات كاربري مثل Username, password , Email,UserID و از همه مهمتر UserTypeID غيره مي باشد .و Primary Key هم UserID است

ما در سايت كاربران رو به چند دسته مي تونيم تقسيم كنيم . مثل مديران و كاربران معمولي
ومدير كل سايت كه اينها در جدول UserType ذخيره ميشوند .
UserTypeID,UserTypeName كه Primary Key اين جدول هم UserTypeID است.

حالا ما نياز به سطح دسترسي ها داريم كه آنها را هم در جدول Permission ذخيره مي كنيم .
مثل حق ايجاد كاربران ، حق حذف مطالب و ...
PermissionID, PremissionName كه Primary Key اين جدول هم PermissionID است.

حالا در يك Table مجزا Permission به گروههاي كاربران(UserType ) نسبت مي دهيم .

و هر وقت كه لازم داشتيم كنترل ميكنيم كه كاربرx كه نوع كاربريش مشخص شده است آيا داري مجوز مورد نظر ميباشد يا نه ؟؟؟

vahid dot net
یک شنبه 15 شهریور 1388, 14:42 عصر
آیا شما استفاده از کلاس هایی چون MembershipProvider, memberShip,Roles ازSystem.web.security namespace رو پیشنهاد می کنید و اصلا استفاده از این کلاسها برای یک سایت مفید هست یا نه ؟

z_bluestar
یک شنبه 15 شهریور 1388, 14:48 عصر
گفتم كه با اين كلاس ها شما User ها و Role ها تون رو HardCode ميكنيد . يعني هميشه اين ها ثابت هستند و تغيير آنها مشكل هست مثلا بخواهيد يه مجوز را از يك كاربر بگيريد
ويا وقتي رو تصور كنيد كه سايت شما بخواهد چند هزار كاربر داشته باشه

به نظر من كار كردن با DataBase خيلي راحت تره و كنترل كاربران رو به طور Online بدست بگيريد.
اين مدل توي كتابي نيومده و همه كتاب هاي آموزشي از اين كلاسها برايس آموزش استفاده مي كنند

vahid dot net
یک شنبه 15 شهریور 1388, 14:55 عصر
ولی اگر اشتباه نکنم این کلاس ها می تونند با دیتابیس ASPNETDB مربوط به خود ASP کار کنند و اطلاعات رو در دیتابیس ذخیره کنند . اگر اشتباه می کنم شما تصحیح بفرمایید.

z_bluestar
یک شنبه 15 شهریور 1388, 15:00 عصر
بله و اگه من هم اشتباه نكنم با SqlExpress مي تونند كار كنن كه همرا با Visual Studio نصب ميشه و خودتون از محدوديت هاي اين Version خبر داريد .
بازم مي گم اين چيز هايي كه من گفتم يه نوع روش و استفاده ازش اختياري هست و بستگي به سايتي داره كه داريد طراحي مي كنيد .
خوبي اين روش اينه كه شما كنترل همه چيز رو در اختيار داريد .

vahid dot net
یک شنبه 15 شهریور 1388, 15:06 عصر
خیلی عذر می خوام مشکلات SQLExpress چیا هستند و اگر این دیتابیس(ASPNETDB) رو بعد از Upload توسط Sql Server استفاده کنیم چه مشکلی پیش میاد .

z_bluestar
یک شنبه 15 شهریور 1388, 15:16 عصر
منظور از مشكل محدوديتش بود و باز هم ميگم اين يه نظر مي تونيد استفاده كنيد و اگه نخواستيد هم مشكلي نيست.
مي تونيد از Class هاي خود Asp.net استفاده كنيد .
و اجازه بديد بقيه دوستان در اين مورد راهنماييتون كنند چون من از اين روش استفاده نمي كنم.

و اگه قوانين سايتو خونده باشيد اينجا جاي اين جور بحث ها نيست.من فقط قصد راهنمايي داشتم

vahid dot net
یک شنبه 15 شهریور 1388, 15:21 عصر
ببخشید احتمالا سوء تفاهم شده . من اصلا جرو بحث نمی کنم بلکه یک سوال معمولی پرسیدم اگر دقت کرده باشید قبل از طرح سوالم گفتم من تازه کار هستم و فقط میخوام از اطلاعات اساتید استفاده کنم. در هر صورت از اینکه ناراحت شدید عذر خواهی و تقاضای می کنم ادامه راهنماییهاتون رو بفرمایید .

vahid dot net
دوشنبه 16 شهریور 1388, 10:29 صبح
سلام
کسی نیست بتونه تو این مشکل بیشتر به من کمک کنه؟

sajjadsrz
چهارشنبه 06 اردیبهشت 1391, 14:17 عصر
سپاس از کمکی که به من انجام دادید