راهکارهای موثر در ASP.Net > راهکار 3 - 5 : کنترل و تعیین سطح دسترسی کاربران در
وب سایت های Asp.Net بر حسب نوع عضویت آنها
مقدمه :
یکی از نینزهای مهم در وب سایت ، تعیین ساختاریست که تنها کاربران خاصی ( مثل کاربران
عضو یا ثبت نام کرده ) قادر باشند به صفحات خاصی در سایت دسترسی داشته باشند . در Asp.Net
شما از قوانین ( Roles ) می توانید برای مدیریت دسترسی کاربران به صفحات استقاده نمایید
. قوانین یا Roles این امکان را به شما می دهند تا برای هر گروه از کاربران مثل ادمین
ها ، اعضای درجه یک ، اعضای معمولی و ... قواعد خاصی جهت دسترسی به صفحات تعیین نمایید
.
برای استفاده از قوانین ابتدا آنها را ایجاد می کنیم ، سپس کاربران را به آنها نسبت
داده و در نهایت سطوح دسترسی را برای هر Role تعیین می کنیم . هر کاربری که عضو یک
Role خاص باشد ، مجوزهای دسترسی آن Role را در اختیار خواهد داشت .
برای مثال شما می توانید یک Role به نام administrator تعیین کرده وسپس کاربران خاصی
را عضو آن کنید . سپس در Role ایجاد شده تعیین نمایید که کاربرن آن فقط اجازه دسترسی
به صفحات admin سایت را دارند . بنابراین کاربرانی که به سایت وارد شده و حتی عضو آن
هستند ، ولی اگر جزو دسته کاربران administrator نباشند ، نمی تواند به صفحات admin
دسترسی یابند .
کارهای تشریح شده در این راهکار عبارتند از :
- ایجاد یک وب سایت Asp.Net .
- ایجاد صفحه ها و پوشه هایی که دارای محدودیت دسترسی هستند .
- انجام تنظیمات لازم برای عضویت و قوانین دسترسی در سایت .
- اضافه کردن اعضا به سایت .
- دسته بندی کاربران و گروه بندی آنها بر اساس Roles .
- تغییر دسترسی بر حسب نیاز .
برای حمایت از این پروژه ، کتاب
راهکارهای موثر در ASP.Net را دانلود نمایید ...
پیش نیازها :
برای اجرای این راهکار نیاز دارید تا برنامه های زیر بر روی سایت شما نصب شده باشد
:
- Microsoft Visual Studio .
- SQL Server Express که بر روی کامپیوتر شما نصب شده باشد . این برنامه معمولا با ویژوال
استودیو نصب می شود .
مرحله اول - طراحی یک سایت ASP.Net :
در مرحله اول از راهکار بایستی یک سایت ASP.Net را برای اجرای پروژه خود ایجاد نمایید
. فرض بر این است که سایت را قبلا ایجاد کرده و یا با نحوه اجرای آن آشنایی دارید ،
در غیر اینصورت به راهکار شماره 1-1 : نحوه ایجاد یک وب سایت ASP.Net در ویژوال استودیو
بروید .
مرحله دوم - طراحی صفحات و پوشه های سایت :
برای کار با قوانین Roles در وب سایت Asp.Net وارد شده ، دو فولدر را ایجاد می کنیم
که می توانید درون آنها صفحاتی را قرار دهید . دسترسی به این فولدرها محدود شده است
.
فولدر اول و صفحات آن توسط تمام اعضای ثبت نام کرده و وارد شده به سایت قابل دسترسی
می باشد ( این پوشه برای کاربران غیر عضو یا anonymous Users ، قابل دسترسی نیست )
.
فولدر دوم شامل صفحاتی است و فقط اعضایی که عضو سایت بوده و جزء گروه Administrator
هستند ، امکان دسترسی به آن را دارند . به عبارت دیگر حتی کاربران عضو در صورتی که
عضو گروه Administrator نباشند ، نمی توانند این صفحات را مشاهده کنند . ابتدا صفحات
و پوشه های لازم را طراحی کرده و سپس قوانین دسترسی به آنها را تعیین می کنیم .
طراحی پوشه های لازم برای انجام کار :
- در منوی Solution Explorer ، بر روی نام وب سایت خود کلیک راست کرده و گزینه New Folder
را بزنید . نام پوشه جدید ایجاد شده را Admin Pages تعیین کنید . این پوشه حاوی یک
صفحه است که فقط کاربران عضو گروه Administrator امکان دسترسی به آن را دارند . همانند
تصویر زیر :
- مجددا بر روی منوی Solution Explorer ، کلیک راست کرده و پوشه ای جدید ، این بار با
نام Members Pages ایجاد نمایید . این پوشه حاوی یک صفحه است که فقط کاربران عضو سایت
می توانند به آن دسترسی داشته باشند .
اضافه کردن صفحات مورد نظر به پوشه های ایجاد شده :
- در منوی Solution Explorer ، بر روی پوشه AdminPage کلیک راست کرده و گزینه Add New
Item را انتخاب نمایید .
- پنجره Add New Item مطابق تصویر زیر باز می شود . گزینه Web Form را برای ایجاد یک
صفحه جدید Asp.Net انتخاب کرده ، نام آن Admin.aspx تعیین نموده ، گزینه Select Master
Page را علامت زده و دکمه Add را بزنید .
- کادر Select a Master Page برای انتخاب یک فایل به عنوان مسترپیج صفحه باز می شود .
گزینه Site.Master را انتخاب کرده و OK را بزنید . ( تمپلیت آماده ویژوال استودیو برای
سایت های Asp.Net ، دارای یک فایل مسترپیج به نام Site.master است . )
- در پنجره باز شده برای انتخاب مسترپیج ، فایل Site.master را به عنوان مسترپیج انتخاب
نمایید .
- به نمای Design رفته و متنی را مثل " Admin Page " در بالای صفحه تایپ نمایید .
- همچنین مراحل را برای ایجاد یک صفحه جدید به نام Members.aspx درپوشه Members Pages
انجام دهید . سپس هر دو فایل را ذخیره نمایید .
اضافه کردن لینک دسترسی به صفحات ساخته شده در فایل مسترپیج سایت :
در این مرحله می خواهیم در فایل مسترپیج سایت ، لینک های دسترسی به دو صفحه جدید ساخته
شده ، را بصورت زیر ایجاد نماییم :
- فایل Site.master را باز کرده ، بر روی کنترل منوی بالای صفحه که شامل دو لینک About
و Home است ، کلیک راست کرده و گزینه Show Smart Tag کلیک نمایید . پنجره Menu Tasks
باز می شود . مثل تصویر زیر :
- از میان گزینه های لیست ، بر روی Edit Menu Items کلیک نمایید تا پنجره آن مطابق تصویر
زیر باز شود :
- از بخش Items ، بر روی آیکون Add a root item کلیک نمایید . یک آیتم جدید به منو اضافه
می شود . در بخش Properties که در قسمت سمت چپ واقع شده است ، مقدار خاصیت NavigateUrl
کنترل را بر روی Admin Pages/admin.aspx تعیین کرده و یا از منوی ویزاردی صفحه مورد
نظر را انتخاب نمایید . همچنین مقدار خاصیت text آیتم را بر روی Administrators تعیین
کنید .
- عملیات فوق را برای ایجاد یک آیتم جدید با مقدار Text برابر با Members only و آدرس
صفحه فایل Members تکرار نمایید .
اکنون لینک های شما برای دسترسی به سایر صفحات سایت فراهم است .
مرحله سوم - تنظیم وب سایت برای سیستم عضویت و تعیین قوانین (Roles) :
مرحله بعدی ، انجام تنظیمات لازم برای سیستم عضویت سایت و تعیین قوانین دسترسی به صفحات
( Roles ) است . شما می توانید از ابزار Web Site Administration Tool که یک ابزار
ویزارد مانند است برای این تنظیمات استفاده نمایید . پس از پایان انجام تنظیمات عضویت
وب سایت ، یک پایگاه داده SQL Server ، به نام Aspnetdb.mdf در پوشه App_Data سایت
ایجاد شده که برای نگهداری اطلاعات اعضای سایت به کار می رود .
نحوه انجام تنظیمات عضویت وب سایت و تعیین قوانین ( Roles) :
- در برنامه ویژوال استودیو ، از منوی Website گزینه Asp.Net Configuration
را کلیک نمایید ، تا ابزار Asp.Net Configuration Tool در مرورگر باز شود . همانند
تصویر زیر :
- از لبه Security ، گزینه Use the security Setup Wizard to configure security step
by step ، را علامت زده وسپس دکمه Next را فشار دهید .
- گزینه From the Internet را علامت بزنید . ( انتخاب این گزینه نشان می دهد که کاربران
شما در محیط اینترنت هستند و برای ورود به سایت از یک نام کاربری و کلمه عبور استفاده
می کنند ) .
توجه داشته باشید که یک صفحه Login.aspx در مرحله اول که وب سایت Asp.Net را ساختیم
بصورت اتوماتیک به سایت اضافه شده است . ( به علت استفاده از template آماده ) . کاربران
از طریق این صفحه می توانند وارد سایت شوند .
- گزینه Next را بزنید . صفحه به شما پیامی مبنی بر اینکه اطلاعات اعضای سایت در پایگاه
داده پیش فرض Asp.Net به نام Aspnetdb.mdf در پوشه App_Data ذخیره می شود ، می دهد
. به این پایگاه داده فراهم کننده پیش فرض یا Advanced Provider Setting می گویند .
برنامه را به حالت پیش فرض رها نموده و مجددا دکمه Next را بزنید .
- در مرحله بعدی ، در زیر بخش Define Roles ، گزینه Enable roles for this web site را
علامت زده و Next را بزنید . همانند تصویر زیر :
- در بخش بعدی ، از قسمت Create New Role ، در کادر New Role Name ، مقدار Admin را تایپ
کرده و سپس گزینه Add Role را بزنید . قوانین جدیدی که ایجاد نموده در بخش Exiting
Roles نمایش داده می شوند . به تصویر زیر دقت نمایید :
در مراحل بعدی این راهکار ، اعضای جدیدی را برای سایت تعیین نموده و آنها را در دسته
های مختلفی قرار خواهیم داد . ابزار Web Site Administration Tool را باز نگه دارید
.
مرحله چهارم - اضافه کردن اعضای جدید به سایت :
در این مرحله از راهکار ما دو عضو جدید را بصورت دستی به سایت اضافه کرده و یکی از
آنها را جزء دسته Administratior و دومی را جزء دسته Members قرار می دهیم :
- در ابزار Web Site Administration Tool ، که در مرحله قبل آن را باز نگه داشته بودیم
، بر روی گزینه Next کلیک نمایید . صفحه Create User نمایش داده می شود . همانند تصویر
زیر :
- اطلاعاتی که درخواست شده را برای ایجاد یک عضو جدید در سایت تعیین نمایید . در اینجا
ما یکسری اطلاعات فرضی را استفاده می کنیم . توجه داشته باشید که هر نام کاربری و رمز
عبوری را می توانید تعیین نمایید ، فقط آنها را برای استفاده های بعدی یادداشت نموده
و از قوانین زیر پیروی نمایند :
- نام کاربری یا User Name : این
کادر نام کاربری را دریافت می کند برای مثال Admin1 ( بدون فاصله ) .
- رمز عبور یا Password : رمز
عبور کاربر را تعیین می کند . بایستی حداقل 8 کاراکتر بوده ، شامل حروف بزرگ و کوچک
و یک کاراکتر غیر الفبایی نیز باشد و فاصله در آن مجاز نیست .
- آدرس ایمیل Email : آدرس ایمیل
کاربر که برای انجام عملیات کاربری مختلف مورد استفاده قرار خواهد گرفت .
- برای فعال شدن کاربر ، گزینه Active User را علامت زده و بر روی دکمه Create User کلیک
نمایید سپس Continue را فشار دهید .
- اطلاعات لازم برای کاربر دوم به نام Member1 را طبق مرحله دوم وارد نمایید .
- در نهایت بر روی دکمه Finish کلیک نمایید تا به صفحه اصلی ابزار Web Site Administration
Tool بازگردید .
مرحله پنجم - تعیین قوانین دسترسی برای پوشه های سایت :
همانطور که در ابتدای راهکار گفتیم ، ما قصد داریم کاری کنیم تا هر یک از صفحات دارای
قوانین دسترسی بوده و فقط گروه یا گروه هایی از کاربران امکان دسترسی به آنها را داشته
باشند . برای این منظور طی مراحل زیر قوانین لازم را برای دسترسی به پوشه های سایت
و صفحات درون آنها تعیین می کنیم :
- در ابزار Web Site Administration Tool، بر روی لبه Security کلیک نمایید .
- در جعبه Access Rules ، بر روی گزینه Creat access rules کلیک نمایید .
- پنجره Creat access rules همانند تصویر زیر باز می شود . در این صفحه می توانید تنظیمات
سطوح دسترسی را برای هر پوشه تعیین نمایید :
- در زیر بخش Select a directory for this rule ، علامت + پوشه اصلی سایت را باز کنید
تا تمام پوشه های آن قابل مشاهده شود .
- پوشه Members Pages را انتخاب نموده و از بخش Rule applies to ، گزینه Anonymous Usres
را انتخاب نمایید . همچنین در قسمت Permision ، گزینه Deny را علامت بزنید . این کار
باعث می شود تا کاربران غیر عضو نتوانند محتویات پوشه Members Pages را مشاهده نمایند
. به صورت زیر :
نکته : بصورت پیش فرض ، Asp.Net
امکان مشاهده تمامی پوشه ها و محتویات سایت شما را به همه کاربران می دهد . بنابراین
اگر می خواهید دسترسی به این مطالب را محدود نمایید ، حتما قوانین لازم را برای هر
پوشه یا صفحه تعیین کنید .
- در نهایت برای اعلان قانون فوق ، گزینه Add This Rule را بزنید . مشاهده خواهید کرد
که قانون جدید در جدول پایین پنجره Add New Access Rule نمایش داده می شود .
- در مرحله بعدی ، پوشه Admin Pages را از بخش Select a directory for this rule انتخاب
نمایید .سپس از بخش rule applies to ، گزینه Role و از کادر کشویی آن آیتم Admin را
انتخاب کنید .
- از بخش Permission نیز گزینه Allow را انتخاب کنید . این کار باعث می شود تا هر کاربری
که جزء قانون Role در سایت باشد ، امکان دسترسی به پوشه فوق را داشته باشد .
- برای اعمال قانون نیز دکمه Add This Rule را بزنید .مثل تصویر زیر :
- در مرحله آخر نیز ، پوشه Admin Pages را مجددا انتخاب نمایید . سپس در قسمت Rule applies
to ،گزینه anonoymous users و در بخش Permission گزینه Deny را انتخاب کرده و با زدن
دکمه Add This Rule قانون جدید را نیز اضافه کنید .
راهنمایی : قانونی که در مرحله
آخر برای پوشه Admin Pages تعیین کردیم ، باعث جلوگیری از دسترسی کلیه کاربران به محتویات
این پوشه به جز کاربرانی که عضو قانون (Role) به نام Admin هستند ، می شود .
تمامی قوانین که به پوشه ها و محتویات سایت اعمال می شوند در جدول زیر پنجره Premission
نمایش داده می شوند . هر زمان که کاربری صفحه را درخواست نماید ، این قوانین بررسی
شده و بر اساس نوع کاربر و قوانین موجود ، اجازه یا عدم اجازه دسترسی وی تعیین می شود
. ترتیب قوانین از بالا به پایین بوده و قانونی که دررده های بالاتر است ، قوانین زیر
خود را نادیده می گیرد . همچنین قانونی که برای یک پوشه وضع می شود ، به تمامی پوشه
های فرزند و فایل های زیر مجموعه آن اعمال می شوند ، مگر اینکه قانونی را بصورت جدا
برای پوشه فرزند تعیین نمایید .
- گزینه Finish را برای خاتمه عملیات بزنید و به لبه Security بازگردید . پنجره ابزار
Web… را برای عملیات ویرایش ، باز بگذارید .
مرحله ششم - ارتباط دادن کاربران و قوانین با هم :
پس از اینکه کاربرانی را برای سایت ایجاد نموده و قوانین لازم را برای دسترسی به پوشه
ها و محتویات سایت ، تعیین کردید ، حالا باید کاربران را به قوانین مرتبط نمایید .
در این مرحله از راهکار ، کاربر Member1 که قبلا ایجاد نمودیم را به قانون Member و
کاربر Admin1 را به قانون های Admin و Member مرتبط می کنیم . بصورت زیر :
- در لبه Security ، در زیر بخش Users ، گزینه Manage Users را انتخاب کنید . تمامی کاربرانی
که در سایت ایجاد نموده یا خود ثبت نام کرده اند را در لیست کاربران مشاهده خواهید
کرد . اگر تعداد کاربران سایت شما زیاد است می توانید آنها را بر حسب نام کاربری یا
آدرس ایمیلشان جستجو کنید . به صورت لیست زیر :
- در رکورد کاربر Admin1 ، گزینه Edit Roles را کلیک نمایید . در زیر بخش Roles ، کادرهای
Admin و Member را علامت بزنید . این کار باعث اعطای مجوز دسترسی به قانون های Admin
و Member را به کاربر Admin1 شده و او می تواند به پوشه های Members Pages و Admin
Pages دسترسی داشته باشد . همانند تصویر زیر :
- در رکورد کاربر Member1 نیز گزینه Edit Roles را کلیک نموده ، ولی این بار فقط کادر
Member را در بخش Roles علامت بزنید . این کار مجوز دسترسی به قانون Member را به کاربر
Member1 داده و او می تواند فقط به محتویات پوشه Members Pages دسترسی داشته یاشد .
- گزینه Back را برای بازگشت به لبه Security زده و پنجره ابزار Web Site Administration
Tool را ببندید .
امتحان کردن سایت :
برای امتحان سایت و آزمایش سیستم عضویتی که طراحی نموده اید ، می توانید با اکانت های
کاربری که در مراحل قبل به نام های Admion1 و Member1 ایجاد نموده بودید ، وارد سایت
شده و سعی کنید تا با هر دو کاربر به محتویات پوشه های سایت دسترسی پیدا نمایید .
به بررسی و امتحان قوانین وضع شده با توجه به نوع کاربر پرداخته و عملکرد سایت را تست
کنید .
در این بخش از راهکار ، قوانین دسترسی به پوشه ها و محتویات شان را که در مراحل قبل
ایجاد کرده بودیم را اندکی تغییر خواهیم داد تا با روش تغییر این قوانین نیز آشنا شوید
.
در مرحله اول از این بخش ، قانون دسترسی به پوشه Members Pages را به گونه ای تغییر
می دهیم تا فقط اعضای عضو قانون Member و نه هر عضو وارد شده ای به سایت بتواند به
محتویات آن دسترسی داشته باشد .
- در برنامه ویژوال استودیو از منوی WebSite گزینه Asp.Net Configuration را بزنید .
از پنجره باز شده ، لبه Security را کلیک نمایید .
- در بخش Access Rules ، گزینه Manage access rules را کلیک کرده و سپس گزینه Add new
access rule را کلیک نمایید . از قسمت Select a directory for this rule پوشه Members
Pages را انتخاب نمایید .
- در بخش Rule applies to ،گزینه All Users را انتخاب نموده و همچنین در بخش Permission
گزینه Deny را علامت زده و OK نمایید . این کار مانع از دسترسی هر نوع کاربری به پوشه
Members Pages می شود .
- مجددا بر روی گزینه Add new access rule کلیک کرده و پوشه Members Pages را انتخاب
کنید .
- همچنین از بخش Rule applies to گزینه Role را علامت زده و از کادر کشویی مقابل آن ،
گزینه Member را انتخاب نمایید .
- در نهایت از بخش Permission ، گزینه Allow را انتخاب نموده و سپس OK و بعد از آن Done
را کلیک کنید . قانونی که هم اکنون ایجاد کردیم فقط اجازه دسترسی کاربران عضو قانون
Member را به صفحات و محتویات پوشه Members Pages می دهد . همانطور که در تصویر زیر
نشان داده شده است :
نکته مهم : کاربر Member1 علی رغم اینکه عضو قانون Member است ، امکان
دسترسی به محتویات پوشه Members Pages را ندارد . این اتفاق به علت قرارگیری قانون
دسترسی اعضای Member به محتویات پوشه Members Pages در زیر قانون جلوگیری از دسترسی
همه اعضای سایت به این پوشه است . برای اطمینان از دسترسی کاربر Member1 و سایر اعضای
عضو گروه Member بایستی قانون دسترسی اعضای Member به این پوشه را در بالای قانون کلی
قرار دهیم .
برای این منظور به لبه Security بازگشته و گزینه Manage access rules را بزنید . سپس
پوشه Members Pages را انتخاب نمایید . از بخش Users and Rules ، گزینه Member را انتخاب
کرده و با زدن دکمه های Move Up ، قانون Member را به بالای لیست ببرید . همانند تصویر
زیر ، سپس گزینه Done را برای بازگشت به لبه Security کلیک نمایید .
مرحله آخر - خلاصه و جمع بندی مدیریت قوانین :
همانطور که مشاهده کردید از ابزار Web Site Administration Tool. می توان برای ایجاد
مدیریت قوانین دسترسی به محتویات یک سایت استفاده نمود . به طور کلی این ابزار امکانات
زیر را در اختیار ما قرار می دهد :
- اضافه کردن یا حذف یک کاربر از قانون های دسترسی به صفحات .
- تعیین قوانین لازم برای کنترل دسترسی به محتویات سایت ها .
- غیرفعال یا حذف نمودن قوانین دسترسی به محتویات سایت ها .
در این ادامه راهکار قصد داریم تا برای آشنایی بیشتر شما جهت کار با ابزار Web
Site Administration Tool، کارهای زیر را نیز انجام دهیم :
- حذف کاربر Admin1 از قانون Admin .
- اضافه نمودن کاربر Member1 به قانون Admin .
نحوه حذف یک کابر از یک قانون موجود :
- در ابزار Web Site Administration Tool ، بر روی لبه security کلیک نموده و از بخش
Roles ، گزینه Create or Manage Roles را کلیک کنید .
- از بخش Role Name ( نام قانون ) ، قانون Admin را انتخاب کرده و بر روی Member کلیک
نمایید . تمامی کاربران عضو این قانون نمایش داده می شوند .
- در بخش User Is In Role برای کاربر Admin1 ، علامت کادر انتها بر آن را برداشته تا
این کار از قانون حذف شود . سپس دکمه Back را بزنید .
برای اضافه کردن یک کاربر به یک قانون موجود :
- مجددا از بخش Users لبه Security ، گزینه Manage Users را کلیک نمایید .
- در قسمت نام کاربر User Name ، در رکورد Member1 ، گزینه Edit User را کلیک نموده تا
صفحه ویرایش قانون باز شود .
- در بخش Roles ، گزینه های Admin و Member را علامت زده و برای ذخیره دکمه Save را بزنید
. اکنون کاربر Member1 علاوه بر عضویت در قانون Member ، عضو قانون Admin نیز بوده
و امکان دسترسی به محتویات پوشه Admin Pages را داراست .
- گزینه OK را برای بستن ابزار Web Site Administration Tool… فشار دهید .
تست پایانی پروژه :
برای تست نهایی سایت خود ، به صفحه اصلی سایت رفته و با زدن کلیدهای Ctrl+F5 ، آن را
اجرا نمایید . سپس بدون وارد کردن اطلاعات کاربری و در مراحل بعدی با وارد نمودن اطلاعات
کاربری کاربران Admin1 و Member1 به بررسی و تست امکان دسترسی به محتویات سایت بپردازید
.
دانلود فایل عملی پروژه و نسخه PDF راهکار
راجع این مطلب
سوال یا اشکالی دارید ؟! آن را در انجمن سایت مطرح نمایید ...
>>>>> ورود به انجمن تخصصی
نطر خودتان درباره این صفحه را با ما در میان گذاشته و در صورت تمایل از Developer1
حمایت نمایید :