معمولا در حالت عادی هر سایت حداقل شامل مدیر سیستم ، کاربران ثبت نام شده و مهمان وجود دارد که برای هر یک از آنها دسرسیهای خاصی در سطح برنامه وجود خواهد داشت لذا در این آموزش مدیریت دسرسی هر یک از کاربران در سیستم را آموزش خواهیم داد.
ابتدا یک پروژه از نوع empty mvc ایجاد نمایید و سپس مراحل زیر را انجام دهید.
بر روی controller کلیک راست کنید و سپس یک کنترلر بنام Home ایجاد نمایید و اکشن index و ویوی متناظر با آن را بصورت دلخواه ایجاد نمایید. در واقع این کنترلر برای دسرسی نیاز به احراز هویت نخواهد داشت.
اکنون وقت آن رسیده است که دسرسی به صفحات کاربران ثبت نام شده مانند ویرایش پروفایل و همچنین صفحات مدیر سیستم مانند پنل ادمین را مدیریت نماییم.
در این بخش صفحات مختص کاربران ثبت نام شده و مدیر سیستم را توسط Area از سطح برنامه تفکیک میکنیم.
بر روی نام پروژه کلیک راست نمایید سپس گزینه Add و سپس Area را انتخاب نمایید و در صفحه باز شده نام Admin را درج کنید.
اکنون به Solution برنامه دقت کنید . پوشه های Area و Admin به برنامه اضافه شده است. در واقع محتویات پوشه Admin مختص مدیر سیستم می باشد. همین مراحل را برای ایجاد Area با نام Users انجام دهید. در پایان Solution برنامه به شکل زیر خواهد بود.
درون پوشه Admin بر روی پوشه Controller آن کلیک راست نمایید و یک کنترلراز نوع Empty با نام فرضی myAdmin که برای مدیریت صفحات سایت بکار میرود ایجاد نمایید.
سپس یک اکشن با نام index و ویوی آنرا با محتویات دلخواه ایجاد نمایید.
مراحل فوق را جهت اضافه نمودن کنترلر به درون پوشه Users انجام دهید و نام کنترلر را myUsers بنامید.
اکنون در صورتیکه برنامه را اجرا کنید و وارد مسیر http://localhost:portNumber/Admin/myAdmin/Index ویا http://localhost: :portNumber /Admin/myAdmin/Index شوید صفحات آن بدون هیچ مشکلی به همه کاربران نمایش داده خواهد شد بنابراین باید از دسرسی این صفحات به کاربران مهمان جلوگیری کنیم.
برای اینکار دستورات زیر را درون فایل webconfig برنامه در انتهای تگ configuration البته قبل از بسته شدن تگ مربوطه درج نمایید.
<location path="admin">
<system.web>
<authorization>
<allow roles="admin" />
<deny users="*" />
</authorization>
</system.web>
</location>
<location path="users">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
دستور location pathدر واقع جهت مدیریت یک Area می باشد.
دستور <allow roles="admin" /> به معنای ورود کاربران با نقش admin به این صفحه میباشد و در خط بعدی دستور <deny users="*" /> درج شده و معنای جلوگیری از ورود همه کاربران به این قسمت می باشد و وقتی این دو دستور با همان ترتیب بصورت یکجا نوشته شوند به معنای ورود افراد، فقط با نقش admin خواهد بود.
دستور <deny users="?" /> به معنای جلوگیری از ورود کاربران لاگین نشده به این قسمت میباشد.
اکنون بر نامه را اجرا نمایید و وارد صفحات index برای Admin یا Users شوید. خواهید دید که با خطای Access is denied مواجه خواهید شد اما بدون هیچ مشکلی به ویوی index از کنترلری که در روت پروژه قرار دارد دسرسی خواهید داشت.
در بخش بعدی به ادامه آموزش خواهیم پرداخت