PDA

View Full Version : مجوز دیدن صفحات با بررسی نوع کاربر........



tayebeh
چهارشنبه 19 مرداد 1384, 11:32 صبح
با سلام
من در برنامه ام چند نوع کاربر دارم که عبارتند از :
Admin(مدیر)
Operator(کاربر معمولی)
Clerck-tcs (کارشناس)

من بااستفاده از روش authenticate form ، کاربرانم را authenticateمی کنم ولی نمی دونم چطور مجوزات مربوط به هر نوع کاربری رو پیاده کنم . منظورم اینه که :
کاربر ادمین می تواند به این صفحات دسترسی داشته باشد :
Request.aspx , user_manage.aspx , report.aspx
کاربر معمولی به این صفحات دسترسی دارد:
Request.aspx
کاربر کارشناس به این صفحات دسترسی دارد:
Employee.aspx
حالا اگر کاربر معمولی با موفقیت وارد سیستم شد و به نوعی ، url یکی از صفحاتی که به آنها مجوز ندارد را وارد کرد (مثلا :user_manage.aspx) برنامه باید به او پیغام مناسب بدهد. چگونه می شود اینکاررا انجام داد؟پیشنهاد شما در این زمینه چیست؟
باتشکر
بای

mehrzad007
چهارشنبه 19 مرداد 1384, 14:22 عصر
یه صفحه بساز که کاربران رمز رو وارد کنند بعد به صفحه مورد نظر ریدایرکت شن در اول هر صفحه هم باید مجوز دسترسی چک بشه تا از دسترسی غیر مجاز جلوگیری بعمل بیاد

Behrouz_Rad
چهارشنبه 19 مرداد 1384, 16:09 عصر
Role ها در دات نت به همین منظور ایجاد شده اند. (در ASP کلاسیک از Session ها بدین منظور استفاده میشد)
لینک زیر و توضیحات بیشتر:
قسمت اول:
http://www.4guysfromrolla.com/webtech/121901-1.shtml
قسمت دوم:
http://www.4guysfromrolla.com/webtech/121901-1.2.shtml
نسخه آپدیت (قسمت اول):
http://aspnet.4guysfromrolla.com/articles/082703-1.aspx
نسخه آپدیت (قسمت دوم):
http://aspnet.4guysfromrolla.com/articles/082703-1.2.aspx

fereshte22
سه شنبه 26 تیر 1386, 09:38 صبح
سلامیک سوال داشتم .ایا استفاده از کامپوننت login در vs2005 میتونه جانشینی برای روشهایی باشد که در پست بالا لینک انها اورده شده ؟میشه یک مقایسه ای بین این روش ها داشته باشید؟

Behrouz_Rad
سه شنبه 26 تیر 1386, 10:23 صبح
Membership Provider در ASP.NET 2.0 همانند سیستم تصدیق هویت در ASP.NET 1.x هست.
اگر میخوای کار آماده بخوری انجام بدی از سیستم جدید در ASP.NET 2.0 استفاده کن اما اگر قرار هست تا در شرکت های معتبر نرم افزاری مشغول به کار بشی، حتی فکر استفاده از Membership هم نکن!
به نظرم سیستم تصدیق هویتی کاملتر از اونی که در ASP.NET 1.x به وجود اومد، زاده نمیشه!

موفق باشید.

fereshte22
سه شنبه 26 تیر 1386, 13:28 عصر
آقای راد از پاسخ شما ممنون هستم
در ضمن ایا روشی که در دو تا لینک اول توضیح داده شده بود روش مطمئنی و به روزی برای این کار است؟
روش بهتری هم وجود دارد؟

Behrouz_Rad
سه شنبه 26 تیر 1386, 14:08 عصر
بله اون روش ها خوب هستند.
تاپیک جامع ذیل رو هم مطالعه بفرمایید:
http://www.codeproject.com/aspnet/formsroleauth.asp

موفق باشید.

mahdi_negahi
سه شنبه 26 تیر 1386, 18:56 عصر
سلام استاد راد من یک سوال اخبار ورزشی از مقاله ای که در codeproject دارم 2 ماه پیش من سیستمی با این روش درست کردم ولی یک مشکل دارم که میخوام کمک کنی


HttpContext.Current.User = new GenericPrincipal(id, roles);
این خط تمام قوانین منو وارد یک کلاس میکنه که من میتوان در هر جا با IsInRole چک کنم که آیا این کاربر role مورد نظر را دارد یا خیر

مشکل : الگوریتم من برای هر role یک عدد دارد مثلا addItem = 15 که additem ، قانون مورد نظر است و 15 یک مقدار که من در صفحه additem نیاز دارم ولی این کلاس GenericPrincipal این امکان را به من نمیدهد که قوانینم را بدست اورم !!!! من برای رفع این مشکل ار session استفاده کردم میخوام بدونم راهی برای بهبود است ؟

Alireza_Salehi
سه شنبه 26 تیر 1386, 19:24 عصر
Membership Provider در ASP.NET 2.0 همانند سیستم تصدیق هویت در ASP.NET 1.x هست.

به نظرم سیستم تصدیق هویتی کاملتر از اونی که در ASP.NET 1.x به وجود اومد، زاده نمیشه!

موفق باشید.

این رو در مورد Membership Provider های پیش فرض گفتید یا ...؟

به نظر شما کسی که توانایی پیاده سازی یک Provider سفارشی برای Membership , Roles,Profiles رو داشته باشه آیا نمیشه گفت کاملا به قضیه مسلطه حتی بیشتر از ASP.NET 1.x !

در ضمن اگر یک Provider طراحی کنیم و بعد راحت استفاده کنیم بهتره یا اون کد نویسی های ASP.NET 1.x ؟

؟

Behrouz_Rad
سه شنبه 26 تیر 1386, 19:26 عصر
سلام استاد راد من یک سوال اخبار ورزشی از مقاله ای که در codeproject دارم 2 ماه پیش من سیستمی با این روش درست کردم ولی یک مشکل دارم که میخوام کمک کنی


HttpContext.Current.User = new GenericPrincipal(id, roles);
این خط تمام قوانین منو وارد یک کلاس میکنه که من میتوان در هر جا با IsInRole چک کنم که آیا این کاربر role مورد نظر را دارد یا خیر

مشکل : الگوریتم من برای هر role یک عدد دارد مثلا addItem = 15 که additem ، قانون مورد نظر است و 15 یک مقدار که من در صفحه additem نیاز دارم ولی این کلاس GenericPrincipal این امکان را به من نمیدهد که قوانینم را بدست اورم !!!! من برای رفع این مشکل ار session استفاده کردم میخوام بدونم راهی برای بهبود است ؟


قانون و مقدار اون رو با یک Seperator از هم جدا کن و در UserData قرار بده.
اولین مقدار نام اون و دومین مقدار، عدد متناظر با اون هست.

موفق باشید.

Behrouz_Rad
سه شنبه 26 تیر 1386, 19:28 عصر
این رو در مورد Membership Provider های پیش فرض گفتید یا...
پیش فرض دوست من!

به نظر شما کسی که توانایی پیاده سازی یک Provider سفارشی برای Membership , Roles,Profiles رو داشته باشه آیا نمیشه گفت کاملا به قضیه مسلطه حتی بیشتر از ASP.NET 1.x !
درسته و غیر از این هم نمیتونه باشه.
البته نمیدونم تسلط از چه منظر مورد نظرته.
مهم اینه که بدونه اصولا سیستم تصویق هویت و مجوزهای دسترسی به منابع به چه صورت انجام میگیره و بتونه تا حد نیاز و ممکن اون رو سفارشی کنه.
اون چیزی که من و دوستانم در پروژه های مختلف استفاده می کنیم، سیستم ساخته شده و مبتنی بر سیستم تصدیق هویتی هست که در ASP.NET 1.x معرفی شد.
تمامی جزئیات معلومه و واقعا دست ما برای انجام تغییرات دلخواه بر روی اون کاملا باز هست.
کلاسی که بیشترین لذت رو از نوشتن اون بردم، کلاسی بود که برای تصدیق هویت افراد در پروژه استفاده میشه.

موفق باشید.

mahdi_negahi
سه شنبه 26 تیر 1386, 19:41 عصر
در UserData قرار بده.

UserData , ticket ? یا همون متغیره که در global تعریف کرده


قانون و مقدار اون رو با یک Seperator از هم جدا کن
منم همین کارو کردم البته در سشن ریختم

Behrouz_Rad
سه شنبه 26 تیر 1386, 19:56 عصر
UserData یکی از پارامترهای FormsAuthenticationTicket است یا میتونی از یک کوکی دیگه استفاده کنی.

موفق باشید.

babi_wd
سه شنبه 26 تیر 1386, 23:29 عصر
آقا بهروز،اینطوری که متوجه شدم
شما توصیه میکنید خودمون برای تصدیق هویت کلاس بنویسیم؟

Behrouz_Rad
چهارشنبه 27 تیر 1386, 00:01 صبح
آقا بهروز،اینطوری که متوجه شدم
شما توصیه میکنید خودمون برای تصدیق هویت کلاس بنویسیم؟
نه تنها برای تصدیق هویت، بلکه برای تمامی اعمال متداولی که در یک پروژه با اونها برخورد میکنی.
اصولا کاری غیر از این انجام دادن خطاست.
البته من بسیاری از دوستان رو دیدم که در تمامی پروژه هاشون مرتبا کدها رو تکرار میکنند.
این کارها غیر حرفه ای هست و زمان زیادی رو برای تولید پروژه میگیره.
به قولی: چرخ رو نباید مرتبا ساخت! یک بار بساز و بارها استفاده کن.

موفق باشید.

babi_wd
چهارشنبه 27 تیر 1386, 00:25 صبح
این که درست
منظورم کارایی و امنیت این مجموعه بود
که یه جورایی تو کار حرفه ای به درد نمی خورن
و بهتره خودمون کلاس معادلش رو بسازیم

Nightbat
پنج شنبه 28 تیر 1386, 12:56 عصر
Membership Provider در ASP.NET 2.0 همانند سیستم تصدیق هویت در ASP.NET 1.x هست.
اگر میخوای کار آماده بخوری انجام بدی از سیستم جدید در ASP.NET 2.0 استفاده کن اما اگر قرار هست تا در شرکت های معتبر نرم افزاری مشغول به کار بشی، حتی فکر استفاده از Membership هم نکن!
به نظرم سیستم تصدیق هویتی کاملتر از اونی که در ASP.NET 1.x به وجود اومد، زاده نمیشه!

موفق باشید.
استفاده از membership provider در .net 2.0 چه مشکلاتی داره ؟:متفکر:

mp2009
یک شنبه 15 مهر 1386, 22:33 عصر
استفاده از membership provider در .net 2.0 چه مشکلاتی داره ؟

اره درسته مگه چه مشکلی داره؟