PDA

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



اصفهان آی تی
چهارشنبه 10 آذر 1389, 14:18 عصر
سلام
من میخوام برای نقش های وبسایتم سطوح دسترسی پویا ایجاد کنم، اما نمیدونم از طریق کدنویسی چه جوری میشه دسترسی فولدرها رو تو we.config تغییر داد؟ اگه میشه راهنماییم کنید!

sam166
پنج شنبه 11 آذر 1389, 08:32 صبح
ببینید شما یک وب کانفیگ مثلا در فولدر admin میسازید و کدهای زیر را داخلش قرار میده
برای فولدر یوزر هم به جای administrator یوزر بنویس

<?xml version="1.0"?>

<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<authorization>
<allow roles="Administrator"></allow>
<deny users="*" />

</authorization>
</system.web>
</configuration>

حالا در وب کانفیگ روت سایتت باید دسترسی به پوشه هارو بندی
اینطوری

<location path="user">
<system.web>
<authorization>
<deny users="?"/>
<deny roles="user"/>
</authorization>
</system.web>
</location>
<location path="administrator">
<system.web>
<authorization>
<deny users="?"/>
<deny roles="Administrator"/>
</authorization>
</system.web>
</location>
البته در کدهای بالا user اول نام فولدر وuser دوم نقش کاربر است برای قسمت administrator هم همینطور
موفق باشی

sam166
پنج شنبه 11 آذر 1389, 08:36 صبح
البته اگر بیشتر راجع به کاری که میخواهی انجام بدی توضیح بدی
بهتر دوستان کمک میکنند

ali_mnkt
پنج شنبه 11 آذر 1389, 12:05 عصر
ببینید شما یک وب کانفیگ مثلا در فولدر admin میسازید و کدهای زیر را داخلش قرار میده
برای فولدر یوزر هم به جای administrator یوزر بنویس

<?xml version="1.0"?>

<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<authorization>
<allow roles="Administrator"></allow>
<deny users="*" />

</authorization>
</system.web>
</configuration>حالا در وب کانفیگ روت سایتت باید دسترسی به پوشه هارو بندی
اینطوری

<location path="user">
<system.web>
<authorization>
<deny users="?"/>
<deny roles="user"/>
</authorization>
</system.web>
</location>
<location path="administrator">
<system.web>
<authorization>
<deny users="?"/>
<deny roles="Administrator"/>
</authorization>
</system.web>
</location>البته در کدهای بالا user اول نام فولدر وuser دوم نقش کاربر است برای قسمت administrator هم همینطور
موفق باشی


این که بازم ایستا شد !!!! منظور دوستمون این بود که با اضافه شدن یک Role جدید در سیستم این قابلیت رو داشته باشیم که در webConfig برای اون Role جدید سطح دسترسی تعیین کنیم

sam166
پنج شنبه 11 آذر 1389, 16:31 عصر
خوب شما باید یک تیبل درست کنید و زمانی که یک رول جدید اضافه کردید در تیبل ذخیره بشه و بعد این تیبل را به یک تیبل دیگه که سطح دسترسی ها رو مشخص کرده ارتباط بدید
اگر از این روش استفاده کنید نیازی به تغییرات در وب کانفیگ نیست
اگر دوست داشتید بیشتر توضیح بدم

raziee
پنج شنبه 11 آذر 1389, 20:49 عصر
سلام
اگر بخوام در یک content page وقتی روی یک دکمه کلیک میشه چند تا کنترل به صورت پویا به صفحه اضافه بشه،اضافه کردن این کنترلها باید در page_load صورت بگیره یا page_oninit????

جدولی در دیتابیس طراحی کنید که حاوی مسیر ها و افراد و یا گروه ها باشد.
وقتی که درخواستی که از کاربر برای یک صفحه میاد رو چک میکنید.

تنظیماتی که در وبکانفیگ هم انجام میدید هم درواقع نقش کاربری افراد رو چک میکنه(از DB یک کوئری میگیره)

mehdi-ghafari
جمعه 12 آذر 1389, 10:21 صبح
سلام
در طراحی پورتال ها هم از همین روش استفاده می کنند؟
آخه در پورتالها میشه هنگام تعریف کاربر جدید هر قسمت رو که دوست داشتیم حق دسترسی به اون رو بهش بدیم.
اینا رو چطور طراحی میکنن؟
ممنون

raziee
جمعه 12 آذر 1389, 10:36 صبح
سلام
در طراحی پورتال ها هم از همین روش استفاده می کنند؟
آخه در پورتالها میشه هنگام تعریف کاربر جدید هر قسمت رو که دوست داشتیم حق دسترسی به اون رو بهش بدیم.
اینا رو چطور طراحی میکنن؟
ممنون
به این صورت:

جدولی در دیتابیس طراحی کنید که حاوی مسیر ها و افراد و یا گروه ها باشد.
وقتی که درخواستی که از کاربر برای یک صفحه میاد رو چک میکنید.
به عنوان مثال Dot Net Nuke (http://www.dotnetnuke.com/) برای هر Tab (که همون صفحات هست) میتونی تعریف کنی که که چه کاربرانی و یا چه گروه هایی میتونند به این صفحه دسترسی داشته باشند.
جدولی طراحی شده با نام TabPermission که مهمترین فیلد های اون

TabID : کلید خارجی به جدول Tabs
PermissionID : کلید خارجی به جدول پرمیشن ها
AllowAccess : وضعیت دسترسی
RoleID : کلید خارجی به نقش های کاربری
UserID : کلید خارجی به جدول کاربران


به این صورت میشه تعریف کرد که به یک صفحه ، چه کسانی و با چه حق دسترسی ای، دسترسی دارند.

mehdi-ghafari
جمعه 12 آذر 1389, 11:10 صبح
به این صورت:

به عنوان مثال Dot Net Nuke (http://www.dotnetnuke.com/) برای هر Tab (که همون صفحات هست) میتونی تعریف کنی که که چه کاربرانی و یا چه گروه هایی میتونند به این صفحه دسترسی داشته باشند.
جدولی طراحی شده با نام TabPermission که مهمترین فیلد های اون

TabID : کلید خارجی به جدول Tabs
PermissionID : کلید خارجی به جدول پرمیشن ها
AllowAccess : وضعیت دسترسی
RoleID : کلید خارجی به نقش های کاربری
UserID : کلید خارجی به جدول کاربران


به این صورت میشه تعریف کرد که به یک صفحه ، چه کسانی و با چه حق دسترسی ای، دسترسی دارند.

ممنون از پاسختون
پس با این وجود میشه کنترل کاملی بر روی دسترسی ها حتی روی تک تک صفحات داشت؟ درسته؟
خوب چطور باید لیست و نام صفحات یا دایرکتوری ها رو در بانکمون داشته باشیم
باید خودمون دستی وارد کنیم؟

raziee
جمعه 12 آذر 1389, 13:36 عصر
ممنون از پاسختون
پس با این وجود میشه کنترل کاملی بر روی دسترسی ها حتی روی تک تک صفحات داشت؟ درسته؟
خوب چطور باید لیست و نام صفحات یا دایرکتوری ها رو در بانکمون داشته باشیم
باید خودمون دستی وارد کنیم؟
بله میتونید روی تک تک صفحات سطح دسترسی داشته باشید.
Dot Net Nuke علاوه بر صفحات بر روی هر ماژول (Web User Control ای که در صفحه لود میشه.) هم سطح دسترسی داره.
صفحات به صورت واقعی (وجود یک فایل در هارد دیسک) نیستند. بلکه این این صفحات در بانک هستند(بسته به نرم افزار چگونگی بار گذاری فرق داره).
بنابراین آدرس صفحات در دیتابیس موجود هست.

اما اگه میخواهید از فایل ها محافظت کنید میتونید تمام فایل ها رو در DB ذخیره کنید.