درک فیلترها در ASP.net MVC
چهارشنبه 25 آذر 1394فیلترها برای تزریق منطق در بین رویدادهای چرخه زندگی درخواست ها در MVCطراحی شده اند . فیلترها راه قدرتمندی برای بازرسی ، تجزیه و تحلیل ، ضبط و ... در بین برنامه های MVC هستند. درک این که چه زمانی هر فیلتر چه نقشی را انجام می دهد ، نوشتن منطق را برای برنامه نویسان آسان میکند.
فیلترها برای تزریق منطق در بین رویدادهای چرخه زندگی درخواست ها در MVCطراحی شده اند . فیلترها راه قدرتمندی برای بازرسی ، تجزیه و تحلیل ، ضبط و ... در بین برنامه های MVC هستند. درک این که چه زمانی هر فیلتر چه نقشی را انجام می دهد ، نوشتن منطق را برای برنامه نویسان آسان میکند. همچنین دیدگاه جالبی برای درک راه اندازی فیلترها در نقاط چندگانه چرخه زندگی درخواست ها به ما می دهد و این باعث اجرای بیشتر کنترل و جلوگیری از درخواست ها ی بیشتر اجرایی می شود. در MVC 5 ، پنج نوع از فیلترینگ وجود دارد.
Authentication filters
فیلترهای احراز هویت افزونه های جدیدی برای MVC 5 هستند. این فیلترها در چرخه زندگی درخواست ها مشارکت میکنند و منطق احراز هویت را اجرا میکنند.
Authorization filters
فیلترهای Authorization بعد از آنکه فیلترهای Authentication با موفقیت انجام شدند و کاربر به درستی احرازهویت شد اجرا می شوند .
Action filters
فیلترهای Action بعد از چرخه زندگی درخواست اجرا می شوند و هر منطقی را که بخواهیم قبل یا بعد از اجرای action انجام شود اجرا میکند .
Result filters
فیلترهای نتیجه قبل و بعد از اعلام نتیجه اجرا می شوند.
Exception filters
این فیلترها زمانی اجرا می شوند که یک استثناء در حین روند درخواست ایجاد شده باشد.
تصویر زیر چرخه اجرایی فیلترها را نشان می دهد.
همانطور که میبینید کنترلر هنگام فراخوانی action شروع به کار میکند ، فیلترهای Authentication و Authorization اولین فیلترهایی هستند که با توجه به اتصالات مدل و مسیر دهی داده ها به پارامترهای Action شروع به کار میکنند. OnActionExecuting قبل از اجرای Action و OnActionExecuted بعد از آنکه اجرای متد Action پایان یافت راه اندازی می شوند. پس از آن فیلترهای Result هستند که قبل از اجرا شدن آن OnResultExecuting و پس از آنکه فیلتر Result اجرا شد OnResultExecuted راه اندازی می شوند. فیلترهای Exception ، فیلترهای مخصوصی هستند که هنگام وقوع یک استثنا سریعا راه اندازی می شوند و می توانید منطق سفارشی خود را در log exception یا صفحه Error که هنگام وقوع استثنا کاربر به آن تغییر مسیر می دهد بنویسید .
فیلترها در Action
مانند هر چرخه زندگی رویدادی در MVC ، پیاده سازی فیلترها در MVC بسیار آسان است.
فیلترهای Authentication
فیلترهای Authentication یکی از امکانات جدید MVC 5 است که به تازگی اضافه شده است. راهی وجود ندارد که قادر باشید آن را در برنامه های قدیمی خود پیاده سازی کنید. از این فیلتر برای احراز هویت می توانید استفاده کنید. در چرحه زندگی درخواست ، هنگامی که ماژول مسیردهی URL انتخاب شد ، مسیر و کنترلر مقداردهی شدند ، اولین چیزی که در اجرای متد Action اتفاق می افتد ، فیلتر Authentication است.
برای پیاده سازی فیلتر Authentication ابتدا باید اینترفیس IAuthenticationFilter با مشتق شدن از کلاس پایه FilterAttribute پیاده سازی شود. در اینجا کلید IAuthenticationFilter است که امکان پیاده سازی دو متد OnAuthentication و OnAuthenticationChallenge را می دهد. OnAuthentication خصوصا برای تنظیم کردن هویت اصلی و یا هر نوع از Authentication که برای برنامه شما قابل درک باشد استفاده می شود و OnAuthenticationChallenge متد مخصوصی است که درست قبل از انجام شدن نتیجه، اجرا می شود و برای اضافه کردن یک چالش به نتیجه قبل از نمایش داده ان به کاربر استفاده می شود.
چگونگی پیاده سازی آن در تصویر زیر نشان داده شده است.
فیلترهای Action
این فیلترها قبل و بعد از یک متد اجرا می شوند، برای پیاده سازی این فیلترها ابتدا باید اینترفیس IActionFilter با مشتق شدن از کلاس پایه FilterAttribute پیاده سازی شود. IActionFilter نیز متدهای OnActionExecuting برای اجرا قبل از Action و OnActionExecuted پس از اجرای Action را پیاده سازی میکند.
فیلترهای Authorization
این فیلترها برای اجرای احراز هویت استفاده می شوند. برای پیاده سازی این فیلتر نیز به یک اینترفیس IAuthorization که از کلاس پایه FilterAttribute مشتق می شود . این فیلتر یک متد OnAuthorizationبرای چک کردن مجوز در اختیار ما قرار می دهد. و پیاده سازی آن به صورت زیر است.
فیلترهای Result
فیلترهایی هستند که قبل و بعد از اجرای نتیجه به یک درخواست Http خاص بکار می روند . برای سفارشی کردن فیلتر Result اینترفیس IResultFilter پیاده سازی می شود که از کلاس پایه FilterAttribute مشتق شده است.
فیلترهای Exception
فیلترهای مخصوصی هستن که هنگام وقوع یک استثنا اجرا می شوند. می توانید از این فیلتر برای Catch کردن استثناهایی که اتفاق می افتند استفاده کنید که آنها را در یک فایل سیستمی یا دیتابیس ذخیره کند و سپس کاربر را به یک صفحه خطا راهنمایی کند یا هر عمل دیگری را که مناسب نیاز شماست انجام دهد . برای سفارشی کردن این فیلتر نیز از یک اینترفیس که از کلاس پایه FilterAttribute مشتق می شود با نام IExceptionFilter استفاده می شود.
پس از سفارشی کردن فیلترهای خود ، در فریم ورک MVC فیلترهای خود را در ارتباط با چرخه زندگی درخواست ها قرار دهید. به این روند ، ثبت فیلترها در چرخه زندگی MVC می گویند .
ثبت فیلترها می تواند از دو طریق انجام شود. اولی قرار دادن آنها به عنوان کنترلر یا صفت های عملیات است ، اما باید در نظر داشته باشید که آن را در همه کنترلر ها یا عملیات ها قرار دهید. راه دیگر ثبت آنها در یک سطح سراسری است که با این روش اطمینان دارید که برای همه کنترلر ها و عملیات ها اجرا خواهند شد. برای راه دوم به Global.asax.csرفته و زیر رویداد Application_start فیلترهای سفارشی خود را ثبت کنید.
- ASP.net MVC
- 2k بازدید
- 6 تشکر