راهکارهای موثر در ASP.Net > راهکار 3 - 5 : کنترل و تعیین سطح دسترسی کاربران در وب سایت های Asp.Net بر حسب نوع عضویت آنها

مقدمه :

یکی از نینزهای مهم در وب سایت ، تعیین ساختاریست که تنها کاربران خاصی ( مثل کاربران عضو یا ثبت نام کرده ) قادر باشند به صفحات خاصی در سایت دسترسی داشته باشند . در Asp.Net شما از قوانین ( Roles ) می توانید برای مدیریت دسترسی کاربران به صفحات استقاده نمایید . قوانین یا Roles این امکان را به شما می دهند تا برای هر گروه از کاربران مثل ادمین ها ، اعضای درجه یک ، اعضای معمولی و ... قواعد خاصی جهت دسترسی به صفحات تعیین نمایید .
برای استفاده از قوانین ابتدا آنها را ایجاد می کنیم ، سپس کاربران را به آنها نسبت داده و در نهایت سطوح دسترسی را برای هر Role تعیین می کنیم . هر کاربری که عضو یک Role خاص باشد ، مجوزهای دسترسی آن Role را در اختیار خواهد داشت .
برای مثال شما می توانید یک Role به نام administrator تعیین کرده وسپس کاربران خاصی را عضو آن کنید . سپس در Role ایجاد شده تعیین نمایید که کاربرن آن فقط اجازه دسترسی به صفحات admin سایت را دارند . بنابراین کاربرانی که به سایت وارد شده و حتی عضو آن هستند ، ولی اگر جزو دسته کاربران administrator نباشند ، نمی تواند به صفحات admin دسترسی یابند .
کارهای تشریح شده در این راهکار عبارتند از :

  • ایجاد یک وب سایت Asp.Net .
  • ایجاد صفحه ها و پوشه هایی که دارای محدودیت دسترسی هستند .
  • انجام تنظیمات لازم برای عضویت و قوانین دسترسی در سایت .
  • اضافه کردن اعضا به سایت .
  • دسته بندی کاربران و گروه بندی آنها بر اساس Roles .
  • تغییر دسترسی بر حسب نیاز .

برای حمایت از این پروژه ، کتاب راهکارهای موثر در ASP.Net را دانلود نمایید ...

پیش نیازها :

برای اجرای این راهکار نیاز دارید تا برنامه های زیر بر روی سایت شما نصب شده باشد :

  1. Microsoft Visual Studio .
  2. SQL Server Express که بر روی کامپیوتر شما نصب شده باشد . این برنامه معمولا با ویژوال استودیو نصب می شود .

مرحله اول - طراحی یک سایت ASP.Net :

در مرحله اول از راهکار بایستی یک سایت ASP.Net را برای اجرای پروژه خود ایجاد نمایید . فرض بر این است که سایت را قبلا ایجاد کرده و یا با نحوه اجرای آن آشنایی دارید ، در غیر اینصورت به راهکار شماره 1-1 : نحوه ایجاد یک وب سایت ASP.Net در ویژوال استودیو بروید .

مرحله دوم - طراحی صفحات و پوشه های سایت :

برای کار با قوانین Roles در وب سایت Asp.Net وارد شده ، دو فولدر را ایجاد می کنیم که می توانید درون آنها صفحاتی را قرار دهید . دسترسی به این فولدرها محدود شده است .
فولدر اول و صفحات آن توسط تمام اعضای ثبت نام کرده و وارد شده به سایت قابل دسترسی می باشد ( این پوشه برای کاربران غیر عضو یا anonymous Users ، قابل دسترسی نیست ) .
فولدر دوم شامل صفحاتی است و فقط اعضایی که عضو سایت بوده و جزء گروه Administrator هستند ، امکان دسترسی به آن را دارند . به عبارت دیگر حتی کاربران عضو در صورتی که عضو گروه Administrator نباشند ، نمی توانند این صفحات را مشاهده کنند . ابتدا صفحات و پوشه های لازم را طراحی کرده و سپس قوانین دسترسی به آنها را تعیین می کنیم .
طراحی پوشه های لازم برای انجام کار :

  1. در منوی Solution Explorer ، بر روی نام وب سایت خود کلیک راست کرده و گزینه New Folder را بزنید . نام پوشه جدید ایجاد شده را Admin Pages تعیین کنید . این پوشه حاوی یک صفحه است که فقط کاربران عضو گروه Administrator امکان دسترسی به آن را دارند . همانند تصویر زیر :
  2. مجددا بر روی منوی Solution Explorer ، کلیک راست کرده و پوشه ای جدید ، این بار با نام Members Pages ایجاد نمایید . این پوشه حاوی یک صفحه است که فقط کاربران عضو سایت می توانند به آن دسترسی داشته باشند .

اضافه کردن صفحات مورد نظر به پوشه های ایجاد شده :

  1. در منوی Solution Explorer ، بر روی پوشه AdminPage کلیک راست کرده و گزینه Add New Item را انتخاب نمایید .
  2. پنجره Add New Item مطابق تصویر زیر باز می شود . گزینه Web Form را برای ایجاد یک صفحه جدید Asp.Net انتخاب کرده ، نام آن Admin.aspx تعیین نموده ، گزینه Select Master Page را علامت زده و دکمه Add را بزنید .
  3. کادر Select a Master Page برای انتخاب یک فایل به عنوان مسترپیج صفحه باز می شود . گزینه Site.Master را انتخاب کرده و OK را بزنید . ( تمپلیت آماده ویژوال استودیو برای سایت های Asp.Net ، دارای یک فایل مسترپیج به نام Site.master است . )
  4. در پنجره باز شده برای انتخاب مسترپیج ، فایل Site.master را به عنوان مسترپیج انتخاب نمایید .
  5. به نمای Design رفته و متنی را مثل " Admin Page " در بالای صفحه تایپ نمایید .
  6. همچنین مراحل را برای ایجاد یک صفحه جدید به نام Members.aspx درپوشه Members Pages انجام دهید . سپس هر دو فایل را ذخیره نمایید .

اضافه کردن لینک دسترسی به صفحات ساخته شده در فایل مسترپیج سایت :

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

  1. فایل Site.master را باز کرده ، بر روی کنترل منوی بالای صفحه که شامل دو لینک About و Home است ، کلیک راست کرده و گزینه Show Smart Tag کلیک نمایید . پنجره Menu Tasks باز می شود . مثل تصویر زیر :
  2. از میان گزینه های لیست ، بر روی Edit Menu Items کلیک نمایید تا پنجره آن مطابق تصویر زیر باز شود :
  3. از بخش Items ، بر روی آیکون Add a root item کلیک نمایید . یک آیتم جدید به منو اضافه می شود . در بخش Properties که در قسمت سمت چپ واقع شده است ، مقدار خاصیت NavigateUrl کنترل را بر روی Admin Pages/admin.aspx تعیین کرده و یا از منوی ویزاردی صفحه مورد نظر را انتخاب نمایید . همچنین مقدار خاصیت text آیتم را بر روی Administrators تعیین کنید .
  4. عملیات فوق را برای ایجاد یک آیتم جدید با مقدار Text برابر با Members only و آدرس صفحه فایل Members تکرار نمایید .

    اکنون لینک های شما برای دسترسی به سایر صفحات سایت فراهم است .

مرحله سوم - تنظیم وب سایت برای سیستم عضویت و تعیین قوانین (Roles) :

مرحله بعدی ، انجام تنظیمات لازم برای سیستم عضویت سایت و تعیین قوانین دسترسی به صفحات ( Roles ) است . شما می توانید از ابزار Web Site Administration Tool که یک ابزار ویزارد مانند است برای این تنظیمات استفاده نمایید . پس از پایان انجام تنظیمات عضویت وب سایت ، یک پایگاه داده SQL Server ، به نام Aspnetdb.mdf در پوشه App_Data سایت ایجاد شده که برای نگهداری اطلاعات اعضای سایت به کار می رود .

نحوه انجام تنظیمات عضویت وب سایت و تعیین قوانین ( Roles) :

  1. در برنامه ویژوال استودیو ، از منوی Website گزینه  Asp.Net Configuration  را کلیک نمایید ، تا ابزار Asp.Net Configuration Tool در مرورگر باز شود . همانند تصویر زیر :


  2. از لبه Security ، گزینه Use the security Setup Wizard to configure security step by step ، را علامت زده وسپس دکمه Next را فشار دهید .
  3. گزینه From the Internet را علامت بزنید . ( انتخاب این گزینه نشان می دهد که کاربران شما در محیط اینترنت هستند و برای ورود به سایت از یک نام کاربری و کلمه عبور استفاده می کنند ) .

    توجه داشته باشید که یک صفحه Login.aspx در مرحله اول که وب سایت Asp.Net را ساختیم بصورت اتوماتیک به سایت اضافه شده است . ( به علت استفاده از template آماده ) . کاربران از طریق این صفحه می توانند وارد سایت شوند .
  4. گزینه Next را بزنید . صفحه به شما پیامی مبنی بر اینکه اطلاعات اعضای سایت در پایگاه داده پیش فرض Asp.Net به نام Aspnetdb.mdf در پوشه App_Data ذخیره می شود ، می دهد . به این پایگاه داده فراهم کننده پیش فرض یا Advanced Provider Setting می گویند . برنامه را به حالت پیش فرض رها نموده و مجددا دکمه Next را بزنید .
  5. در مرحله بعدی ، در زیر بخش Define Roles ، گزینه Enable roles for this web site را علامت زده و Next را بزنید . همانند تصویر زیر :
  6. در بخش بعدی ، از قسمت Create New Role ، در کادر New Role Name ، مقدار Admin را تایپ کرده و سپس گزینه Add Role را بزنید . قوانین جدیدی که ایجاد نموده در بخش Exiting Roles نمایش داده می شوند . به تصویر زیر  دقت نمایید :


    در مراحل بعدی این راهکار ، اعضای جدیدی را برای سایت تعیین نموده و آنها را در دسته های مختلفی قرار خواهیم داد . ابزار Web Site Administration Tool را باز نگه دارید .

مرحله چهارم - اضافه کردن اعضای جدید به سایت :

در این مرحله از راهکار ما دو عضو جدید را بصورت دستی به سایت اضافه کرده و یکی از آنها را جزء دسته Administratior و دومی را جزء دسته Members قرار می دهیم :

  1. در ابزار Web Site Administration Tool ، که در مرحله قبل آن را باز نگه داشته بودیم ، بر روی گزینه Next کلیک نمایید . صفحه Create User نمایش داده می شود . همانند تصویر زیر :
  2. اطلاعاتی که درخواست شده را برای ایجاد یک عضو جدید در سایت تعیین نمایید . در اینجا ما یکسری اطلاعات فرضی را استفاده می کنیم . توجه داشته باشید که هر نام کاربری و رمز عبوری را می توانید تعیین نمایید ، فقط آنها را برای استفاده های بعدی یادداشت نموده و از قوانین زیر پیروی نمایند :
    • نام کاربری یا User Name : این کادر نام کاربری را دریافت می کند برای مثال Admin1 ( بدون فاصله ) .
    • رمز عبور یا Password : رمز عبور کاربر را تعیین می کند . بایستی حداقل 8 کاراکتر بوده ، شامل حروف بزرگ و کوچک و یک کاراکتر غیر الفبایی نیز باشد و فاصله در آن مجاز نیست .
    • آدرس ایمیل Email : آدرس ایمیل کاربر که برای انجام عملیات کاربری مختلف مورد استفاده قرار خواهد گرفت .
  3. برای فعال شدن کاربر ، گزینه Active User را علامت زده و بر روی دکمه Create User کلیک نمایید سپس Continue را فشار دهید .
  4. اطلاعات لازم برای کاربر دوم به نام Member1 را طبق مرحله دوم وارد نمایید .
  5. در نهایت بر روی دکمه Finish کلیک نمایید تا به صفحه اصلی ابزار Web Site Administration Tool بازگردید .

مرحله پنجم - تعیین قوانین دسترسی برای پوشه های سایت :

همانطور که در ابتدای راهکار گفتیم ، ما قصد داریم کاری کنیم تا هر یک از صفحات دارای قوانین دسترسی بوده و فقط گروه یا گروه هایی از کاربران امکان دسترسی به آنها را داشته باشند . برای این منظور طی مراحل زیر قوانین لازم را برای دسترسی به پوشه های سایت و صفحات درون آنها تعیین می کنیم :

  1. در ابزار Web Site Administration Tool، بر روی لبه Security کلیک نمایید .
  2. در جعبه Access Rules ، بر روی گزینه Creat access rules کلیک نمایید .
  3. پنجره Creat access rules همانند تصویر زیر باز می شود . در این صفحه می توانید تنظیمات سطوح دسترسی را برای هر پوشه تعیین نمایید :
  4. در زیر بخش Select a directory for this rule ، علامت + پوشه اصلی سایت را باز کنید تا تمام پوشه های آن قابل مشاهده شود .
  5. پوشه Members Pages را انتخاب نموده و از بخش Rule applies to ، گزینه Anonymous Usres را انتخاب نمایید . همچنین در قسمت Permision ، گزینه Deny را علامت بزنید . این کار باعث می شود تا کاربران غیر عضو نتوانند محتویات پوشه Members Pages را مشاهده نمایند . به صورت زیر :

    نکته : بصورت پیش فرض ، Asp.Net امکان مشاهده تمامی پوشه ها و محتویات سایت شما را به همه کاربران می دهد . بنابراین اگر می خواهید دسترسی به این مطالب را محدود نمایید ، حتما قوانین لازم را برای هر پوشه یا صفحه تعیین کنید .
  6. در نهایت برای اعلان قانون فوق ، گزینه Add This Rule را بزنید . مشاهده خواهید کرد که قانون جدید در جدول پایین پنجره Add New Access Rule نمایش داده می شود .
  7. در مرحله بعدی ، پوشه Admin Pages را از بخش Select a directory for this rule انتخاب نمایید .سپس از بخش rule applies to ، گزینه Role و از کادر کشویی آن آیتم Admin را انتخاب کنید .
  8. از بخش Permission نیز گزینه Allow را انتخاب کنید . این کار باعث می شود تا هر کاربری که جزء قانون Role در سایت باشد ، امکان دسترسی به پوشه فوق را داشته باشد .
  9. برای اعمال قانون نیز دکمه Add This Rule را بزنید .مثل تصویر زیر :
  10. در مرحله آخر نیز ، پوشه Admin Pages را مجددا انتخاب نمایید . سپس در قسمت Rule applies to ،گزینه anonoymous users و در بخش Permission گزینه Deny را انتخاب کرده و با زدن دکمه Add This Rule قانون جدید را نیز اضافه کنید .
    راهنمایی : قانونی که در مرحله آخر برای پوشه Admin Pages تعیین کردیم ، باعث جلوگیری از دسترسی کلیه کاربران به محتویات این پوشه به جز کاربرانی که عضو قانون (Role) به نام Admin هستند ، می شود .
    تمامی قوانین که به پوشه ها و محتویات سایت اعمال می شوند در جدول زیر پنجره Premission نمایش داده می شوند . هر زمان که کاربری صفحه را درخواست نماید ، این قوانین بررسی شده و بر اساس نوع کاربر و قوانین موجود ، اجازه یا عدم اجازه دسترسی وی تعیین می شود . ترتیب قوانین از بالا به پایین بوده و قانونی که دررده های بالاتر است ، قوانین زیر خود را نادیده می گیرد . همچنین قانونی که برای یک پوشه وضع می شود ، به تمامی پوشه های فرزند و فایل های زیر مجموعه آن اعمال می شوند ، مگر اینکه قانونی را بصورت جدا برای پوشه فرزند تعیین نمایید .
  11. گزینه Finish را برای خاتمه عملیات بزنید و به لبه Security بازگردید . پنجره ابزار Web… را برای عملیات ویرایش ، باز بگذارید .

مرحله ششم - ارتباط دادن کاربران و قوانین با هم :

پس از اینکه کاربرانی را برای سایت ایجاد نموده و قوانین لازم را برای دسترسی به پوشه ها و محتویات سایت ، تعیین کردید ، حالا باید کاربران را به قوانین مرتبط نمایید . در این مرحله از راهکار ، کاربر Member1 که قبلا ایجاد نمودیم را به قانون Member و کاربر Admin1 را به قانون های Admin و Member مرتبط می کنیم . بصورت زیر :

  1. در لبه Security ، در زیر بخش Users ، گزینه Manage Users را انتخاب کنید . تمامی کاربرانی که در سایت ایجاد نموده یا خود ثبت نام کرده اند را در لیست کاربران مشاهده خواهید کرد . اگر تعداد کاربران سایت شما زیاد است می توانید آنها را بر حسب نام کاربری یا آدرس ایمیلشان جستجو کنید . به صورت لیست زیر :
  2. در رکورد کاربر Admin1 ، گزینه Edit Roles را کلیک نمایید . در زیر بخش Roles ، کادرهای Admin و Member را علامت بزنید . این کار باعث اعطای مجوز دسترسی به قانون های Admin و Member را به کاربر Admin1 شده و او می تواند به پوشه های Members Pages و Admin Pages دسترسی داشته باشد . همانند تصویر زیر :
  3. در رکورد کاربر Member1 نیز گزینه Edit Roles را کلیک نموده ، ولی این بار فقط کادر Member را در بخش Roles علامت بزنید . این کار مجوز دسترسی به قانون Member را به کاربر Member1 داده و او می تواند فقط به محتویات پوشه Members Pages دسترسی داشته یاشد .
  4. گزینه Back را برای بازگشت به لبه Security زده و پنجره ابزار Web Site Administration Tool را ببندید .

امتحان کردن سایت :

برای امتحان سایت و آزمایش سیستم عضویتی که طراحی نموده اید ، می توانید با اکانت های کاربری که در مراحل قبل به نام های Admion1 و Member1 ایجاد نموده بودید ، وارد سایت شده و سعی کنید تا با هر دو کاربر به محتویات پوشه های سایت دسترسی پیدا نمایید .
به بررسی و امتحان قوانین وضع شده با توجه به نوع کاربر پرداخته و عملکرد سایت را تست کنید .
در این بخش از راهکار ، قوانین دسترسی به پوشه ها و محتویات شان را که در مراحل قبل ایجاد کرده بودیم را اندکی تغییر خواهیم داد تا با روش تغییر این قوانین نیز آشنا شوید .
در مرحله اول از این بخش ، قانون دسترسی به پوشه Members Pages را به گونه ای تغییر می دهیم تا فقط اعضای عضو قانون Member و نه هر عضو وارد شده ای به سایت بتواند به محتویات آن دسترسی داشته باشد .

  1. در برنامه ویژوال استودیو از منوی WebSite گزینه Asp.Net Configuration را بزنید . از پنجره باز شده ، لبه Security را کلیک نمایید .
  2. در بخش Access Rules ، گزینه Manage access rules را کلیک کرده و سپس گزینه Add new access rule را کلیک نمایید . از قسمت Select a directory for this rule پوشه Members Pages را انتخاب نمایید .
  3. در بخش Rule applies to ،گزینه All Users را انتخاب نموده و همچنین در بخش Permission گزینه Deny را علامت زده و OK نمایید . این کار مانع از دسترسی هر نوع کاربری به پوشه Members Pages می شود .
  4. مجددا بر روی گزینه Add new access rule کلیک کرده و پوشه Members Pages را انتخاب کنید .
  5. همچنین از بخش Rule applies to گزینه Role را علامت زده و از کادر کشویی مقابل آن ، گزینه Member را انتخاب نمایید .
  6. در نهایت از بخش 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، کارهای زیر را نیز انجام دهیم :

  1. حذف کاربر Admin1 از قانون Admin .
  2. اضافه نمودن کاربر Member1 به قانون Admin .

نحوه حذف یک کابر از یک قانون موجود :

  1. در ابزار Web Site Administration Tool ، بر روی لبه security کلیک نموده و از بخش Roles ، گزینه Create or Manage Roles را کلیک کنید .
  2. از بخش Role Name ( نام قانون ) ، قانون Admin را انتخاب کرده و بر روی Member کلیک نمایید . تمامی کاربران عضو این قانون نمایش داده می شوند .
  3. در بخش User Is In Role برای کاربر Admin1 ، علامت کادر انتها بر آن را برداشته تا این کار از قانون حذف شود . سپس دکمه Back را بزنید .

برای اضافه کردن یک کاربر به یک قانون موجود :

  1. مجددا از بخش Users لبه Security ، گزینه Manage Users را کلیک نمایید .
  2. در قسمت نام کاربر User Name ، در رکورد Member1 ، گزینه Edit User را کلیک نموده تا صفحه ویرایش قانون باز شود .
  3. در بخش Roles ، گزینه های Admin و Member را علامت زده و برای ذخیره دکمه Save را بزنید . اکنون کاربر Member1 علاوه بر عضویت در قانون Member ، عضو قانون Admin نیز بوده و امکان دسترسی به محتویات پوشه Admin Pages را داراست .
  4. گزینه OK را برای بستن ابزار Web Site Administration Tool… فشار دهید .

تست پایانی پروژه :

برای تست نهایی سایت خود ، به صفحه اصلی سایت رفته و با زدن کلیدهای Ctrl+F5 ، آن را اجرا نمایید . سپس بدون وارد کردن اطلاعات کاربری و در مراحل بعدی با وارد نمودن اطلاعات کاربری کاربران Admin1 و Member1 به بررسی و تست امکان دسترسی به محتویات سایت بپردازید .

دانلود فایل عملی پروژه و نسخه PDF راهکار



راجع این مطلب سوال یا اشکالی دارید ؟! آن را در انجمن سایت مطرح نمایید ...         >>>>>  ورود به انجمن تخصصی


نطر خودتان درباره این صفحه را با ما در میان گذاشته و در صورت تمایل از Developer1 حمایت نمایید :

آیا مطالب این صفحه برای شما مناسب و مفید بوده است :

نام :                 
آدرس Email :    
 
نظر شما :  
 
سوال امنیتی : پایتخت ایران ؟      
حمایت از سایت Developer1