معرفی
مجوز فرآیندی است که تعیین می کند کاربر قادر به انجام چه کاری است. به عنوان مثال، یک کاربر Admin مجاز است یک نرم افزار را از رایانه نصب یا حذف کند و یک کاربر غیر Admin می تواند از نرم افزار از رایانه استفاده کند. مستقل و متعامد از احراز هویت است. با این حال، مجوز نیاز به مکانیزم احراز هویت دارد. برای برنامه ها، اولین مرحله همیشه احراز هویت و سپس مجوز است.
با استفاده از AuthorizeFilter، میتوانیم دسترسی در برنامه MVC / Web API خود را با تعیین این ویژگی در روش کنترل یا عمل کنترل کنیم. به طور مشابه، راهی برای کنترل دسترسی در صفحات Razor ما وجود دارد، به عنوان مثال، استفاده از قراردادهای مجوز در هنگام راه اندازی. این قراردادها به ما اجازه می دهد تا به کاربران اجازه دسترسی به صفحات یا پوشه های جداگانه صفحات را بدهیم. به همین ترتیب، این قراردادها به کاربران ناشناس اجازه دسترسی به صفحات یا پوشههای صفحات را میدهند.
برای نشان دادن مفهوم، من یک برنامه کاربردی با ASP.NET Core Identity ایجاد کرده ام. برای راهنمایی در مورد نحوه ایجاد یک برنامه کاربردی با ASP.NET Core Identity، لطفاً به مقاله من " نمای کلی هویت در ASP.NET Core 2.0 " مراجعه کنید.
با استفاده از AddRazorPagesOptions می توانیم در مسیر مشخص شده یک AuthorizeFilter به صفحه اضافه کنیم. با AddRazorPagesOptions، ما چند روش داریم که میتوان از آنها برای مجوز دادن یا اجازه دسترسی ناشناس به صفحه یا پوشه استفاده کرد.
AuthorizePage
این یک AuthorizeFilter را به صفحه مشخص شده اضافه می کند. دو روش افزودنی وجود دارد: یکی "پذیرفتن نام صفحه" و دیگری "پذیرش نام صفحه و خط مشی مجوز".
- public static PageConventionCollection AuthorizePage(this PageConventionCollection conventions, string pageName)
- public static PageConventionCollection AuthorizePage(this PageConventionCollection conventions, string pageName, string policy)
AuthorizeFolder
این گزینه AuthorizeFilter را به تمام صفحات زیر یک پوشه مشخص اضافه می کند. دو روش افزودنی وجود دارد - مسیر پوشه را بپذیرید و مسیر پوشه و خط مشی مجوز را بپذیرید.
- public static PageConventionCollection AuthorizeFolder(this PageConventionCollection conventions, string folderPath)
- public static PageConventionCollection AuthorizeFolder(this PageConventionCollection conventions, string folderPath, string policy)
AllowAnonymousToPage
این AllowAnonymousFilter را به صفحه مشخص شده اضافه می کند.
- public static PageConventionCollection AllowAnonymousToPage(this PageConventionCollection conventions, string pageName)
AllowAnonymousToFolder
این AllowAnonymousFilter را به تمام صفحات زیر پوشه مشخص شده اضافه می کند.
- public static PageConventionCollection AllowAnonymousToFolder(this PageConventionCollection conventions, string folderPath)
AuthorizeAreaPage
این همان روش AuthorizePage است. AuthorizeFilter را به صفحه مشخص شده در ناحیه مشخص شده اضافه می کند. همچنین دارای یک روش گسترش است که خط مشی مجوز را می پذیرد.
- public static PageConventionCollection AuthorizeAreaPage(this PageConventionCollection conventions, string areaName, string pageName)
- public static PageConventionCollection AuthorizeAreaPage(this PageConventionCollection conventions, string areaName, string pageName, string policy)
AuthorizeAreaFolder
این همان روش AuthorizeFolder است. AuthorizeFilter را به تمام صفحات زیر پوشه مشخص شده در ناحیه مشخص شده اضافه می کند. همچنین دارای روش گسترش است که خط مشی مجوز را می پذیرد.
- public static PageConventionCollection AuthorizeAreaFolder(this PageConventionCollection conventions, string areaName, string folderPath)
- public static PageConventionCollection AuthorizeAreaFolder(this PageConventionCollection conventions, string areaName, string folderPath, string policy)
AllowAnonymousToAreaPage
این AllowAnonymousFilter را به صفحه مشخص شده که در زیر ناحیه مشخص شده قرار دارد اضافه می کند.
- public static PageConventionCollection AllowAnonymousToAreaPage(this PageConventionCollection conventions, string areaName, string pageName)
AllowAnonymousToAreaFolder
این AllowAnonymousFilter را به تمام صفحاتی که در زیر پوشه ناحیه مشخص قرار دارند اضافه می کند.
- public static PageConventionCollection AllowAnonymousToAreaFolder(this PageConventionCollection conventions, string areaName, string folderPath)
مثال
برای نشان دادن مفهوم، من چند صفحه ایجاد کرده ام و قطعه زیر ساختار پوشه مجوز تعریف شده در پروژه را نشان می دهد.