PDA

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



webman
پنج شنبه 02 اسفند 1386, 14:50 عصر
با سلام دوستان
محدود کردن دسترسی به پوشه ها و فایل ها با استفاده از role ها و تنضیمات در webconfig انجام پذیر است اما برای محدود کردن دسترسی به تک تک فایل ها باید برای هر فایل(صفحه) بطور مجزا در webconfig کد نوشت مثلا
<location path="Page1.aspx">
<system.web>
<authorization>
<allow roles="Admin>
<deny users="*" />
</authorization>
</system.web>
</location>
یعنی برای هر صفحه باید چنین کدی نوشت؟ منظور محدودیت دسترسی به هر صفحه مد نظر است و دسته بندی صفحات در پوشه ها و محدود کردن پوشه ها صفحاتش مد نظر نیست.
اگر تعداد صفحات زیاد باشد این روش درست است یا راه دیگری وجود دارد

mp2009
پنج شنبه 02 اسفند 1386, 16:58 عصر
میتونی توی page loud هر صفحه این کد رو بنویسی تا کاربر نتونه صفحه رو ببینه



if (Page.User.Identity.IsAuthenticated)
{
// Some Code


}
else

Response.Redirect("~/users/login.aspx");
}

nazaninam
پنج شنبه 02 اسفند 1386, 22:11 عصر
اگه بخواد تو Page Load هر صفحه بگذاره که از راه اول بدتره !!!

دوست عزیز چند تا کار میشه انجام داد :
1- اگر از مستر پیج استفاده می کنید خیلی ساده یک شرط مثل شرطی که دوستمون گفتن مینویسید که نام صفحه رو از Url دریافت می کنه و چک می کنه که آیا این صفحه مجوز داره یا خیر
2- میتونید همین کار رو در Global.asax انجام بدید مثلا در رویداد Application_BeginRequest
3- اگه بتونید از UserControl ها استفاده کنید که کارتون خیلی راحت میشه قبل از لود کنترل چک کنید که آیا این کنترل مجوز لود شدن دارد یا خیر

موفق باشید

webman
جمعه 03 اسفند 1386, 14:11 عصر
ممنون nazaninam من زیاد وارد نیستم یه چیزایی فهمیدم باید بیشتر کار کنم پس تنظیمات webconfig میره کنار .بیشتر بگم یک user تعیین هویت میشه بعد ما مثلا 50 تا webpage داریم این user مثلا به 5 تا از این صفحات اجازه دسترسی داره با این حساب دسترسی به این صفحات باید تو بانک برای هر user ذخیره بشه وبا توجه به توضیح شما زمان دیدن صفحات چک بشه .درست فهمیدم؟؟ اگر ممکنه بیشتر راهنمایی بفرمایید ممنون

nazaninam
جمعه 03 اسفند 1386, 18:26 عصر
بگذار یکم بازش کنیم !
شما برای هر کاربر یک Field به بانک اضافه کنید به نام مثلا UserRole ، توی این فیلد سطوح دسترسی هر کاربر مشخص میشه مثلا سطح دسترسی من اینه : "User|Admin|Security" در حقیقت من 3 تا نقش دارم که هر کدوم با یک Spliter جدا شده ....
خوب قدم دوم اینه که یک لیست از صفحاتی درست کنی که برای دسترسی به اونا سطح دسترسی لازمه باسه این که یک جدول درست کن توی یک فیلد نام صفحه داخل فیلد دوم سطح دسترسی مورد نظر رو وارد کن مثلا برای صفحه MyPage.aspx سطح دسترسی Admin لازمه .

خوب بریم سراغ UI ، در صفحه مثلا مسترپیج میای اسم صفحه رو دریافت می کنی ( از متد Request.Url با کمی تغییر میتونی برای این کار استفاده کنی )
بعد چک می کنی که آیا این صفحه جزو اون صفحه های محدود شده هست یا نه !
اگه نبود که اصلا کاری بهش ندارم !
اگر جزو اون لیست بود حالا سطح دسترسی که باسه اون صفحه تعیین شده رو از بانک دریافت می کنی .
میریم سراغ کاربر ، اگر کاربر لاگین نکرده بود که واضحه میفرستیمش به صفحه لاگین !
اگر لاگین کرده بود از متد User.IsInRole استفاده می کنیم ، در صورتی که مقدار True برگشت کاربر سطح دسترسی لازم رو داره !
در غیر این صورت به صفحه پیام عدم سطح دسترسی هدایتش کن .

چیزی که مونده مدیریت Role هاست ، فکر کنم بلد باشی چطور با Roles کار کنی اگر بلد نیستی بگو اونم توضیح بدم
موفق باشید

webman
شنبه 04 اسفند 1386, 15:04 عصر
اگر در مورد Roleها هم توضیح بدی عالیه .یک سوال جور دیگه توی یک سایت تعدادی کالا داریم با مدلهای مختلف هر مدل یک صفحه خاص خودشو داره حالا user یک مدل وارد میکنه مثلا مدل x100 حال میخایم فقط به صفحه مدل x100 دسترسی داشته باشه فکر میکنید باید برای هر مدل یک Role تعریف بشه (کاربر یک مشتریه که قبلا این مدلو با سریال منحصر بفرد خریداری کرده) یعنی Role کاربر ارتباط داره به مدلهایی که از کالاها خریداری کرده و دسته بندی خاصی برای یک Role وجود نداره فقط دسترسی به یک صفحه با توجه به یک مدل مهمه
واقعا ممنون میشم اگر راهنمایی حتی جزیی بکنید

E_Zabihi
یک شنبه 05 اسفند 1386, 09:39 صبح
ببینید دوستان ، تقریبا (بجز چند مورد خاص) دیگه چک کردن امنیت با روش page base منسوخ شده و بجای اون از روش role based استفاده می کنن . توی asp.net2 خود مایکروسافت زحمت همه این کارها رو کشیده و تمام کنترل های لازم رو هم اورده ، فقط کافیه با تنظیمات web.config اونها رو استفاده کنی . برای اطلاعات بیشتر هم لینک زیر رو ببینید :
http://aspnet.4guysfromrolla.com/articles/120705-1.aspx
در مورد مدل های کالا هم باید بگم می تونی اینکار رو کنی که برای هر کاربر یه profile attribute مثلا به اسم AuthorizedModels اضافه کنی و مدل هایی رو که کاربر می تونه ببینه توی اون لیست کنی ، هنگام چک کردن مجوز دسترسی هم ، مثلا توی یه user control مربوط به نمایش مدل ها ، این رو چک کنی و یا توی master page و یا حتی می تونی صفحه مدل ها رو از یک صفحه پدر به ارث ببری و توی صفحه پدر این چکینک ها رو انجام بدی ...

ghasem3000
پنج شنبه 21 آذر 1392, 10:45 صبح
salsm
mamnon misham bishtar tozih bdi albate besorat tasviry
ممنون
:متفکر: