ফিল্টারগুলো Web API ফ্রেমওয়ার্কের রিকোয়েস্ট প্রসেসিং-এর বিভিন্ন লেভেলে অতিরিক্ত লজিক ইনজেক্ট করতে ব্যবহৃত হয়। ফিল্টার ক্রস-কাটিং কনসার্নস (লগিং, অথরাইজেশন, ক্যাশিং) এর জন্য একটি পথ প্রদান করে। ফিল্টারগুলো একটি একশন মেথড বা কন্ট্রোলার-এ ডিক্লেরেটিভ বা প্রোগ্রাম্যাটিকভাবে প্রয়োগ করা যায়। Web API C#-তে ফিল্টারের প্রকারগুলো নিচে দেওয়া হলো:
১. Authentication Filter (অথেনটিকেশন ফিল্টার)
একটি অথেনটিকেশন ফিল্টার ইউজার ডিটেইলস অথেনটিকেট করতে সাহায্য করে। অথেনটিকেশন ফিল্টারে, আমরা ইউজার অথেনটিসিটি চেক করার লজিক লিখি।
২. Authorization Filter (অথরাইজেশন ফিল্টার)
অথরাইজেশন ফিল্টারগুলো ইউজার এক্সেস চেক করার জন্য দায়িত্বে থাকে। এগুলো ফ্রেমওয়ার্কের `IAuthorizationFilter` ইন্টারফেস ইমপ্লিমেন্ট করে।
৩. Action Filter (অ্যাকশন ফিল্টার)
অ্যাকশন ফিল্টারগুলো অ্যাকশন মেথড এক্সিকিউশনের আগে বা পরে অতিরিক্ত লজিক যোগ করতে ব্যবহৃত হয়। `OnActionExecuting` এবং `OnActionExecuted` মেথডগুলো যথাক্রমে একটি অ্যাকশন মেথড এক্সিকিউট হওয়ার আগে এবং পরে আমাদের লজিক যোগ করতে ব্যবহৃত হয়।
৪. Exception Filter (এক্সসেপশন ফিল্টার)
এক এক্সসেপশন ফিল্টার তখন এক্সিকিউট হয় যখন একটি কন্ট্রোলার মেথড কোনো অনহ্যান্ডেল্ড এক্সসেপশন থ্রো করে যা `HttpResponseException` এক্সসেপশন নয়। `HttpResponseException` টাইপ একটি বিশেষ কেস, কারণ এটি স্পেসিফিক্যালি HTTP রেসপন্স রিটার্ন করার জন্য ডিজাইন করা হয়েছে।
৫. Override Filter (ওভাররাইড ফিল্টার)
ওভাররাইড ফিল্টারগুলো ইনডিভিজুয়াল একশন মেথডের জন্য অন্যান্য ফিল্টারের বিহевиয়ার কাস্টোমাইজ করতে ব্যবহৃত হয়। কখনও কখনও এমন রিকোয়ারমেন্ট থাকে যে, যে ফিল্টারগুলো আমাদের আছে সেগুলো ওভাররাইড করতে হবে। maan le ki আমরা কন্ট্রোলার লেভেলে ফিল্টার প্রয়োগ করেছি কিন্তু কন্ট্রোলারের ভিতরে একটি একশন আছে যেখানে আমরা ফিল্টার ব্যবহার করতে চাই না, সেক্ষেত্রে আমরা ফিল্টারের ওভাররাইড ভার্সন ব্যবহার করতে পারি।
ফিল্টারগুলো সাধারণত নিচের তিনভাবে প্রয়োগ করা হয়:
- কন্ট্রোলার লেভেলে
- একশন মেথড লেভেলে
- গ্লোবাল লেভেলে (WebApi.Config.cs)
চলুন একটি অথরাইজেশন ফিল্টারের ইমপ্লিমেন্টেশন উদাহরণ দেখি এবং কীভাবে এটি কাজ করে।
উদাহরণ
using System.Web.Http;
namespace DemoWebApplication.Controllers
{
public class DemoController : ApiController
{
[Authorize]
public IHttpActionResult Get()
{
return Ok();
}
}
}
যেহেতু আমরা একশন মেথডের ওপর `[Authorize]` অ্যাট্রিবিউট যোগ করেছি, একশন মেথড অ্যাক্সেস করতে প্রপার অথরাইজেশন যেমন Bearer Token, API Key, OAuth ইত্যাদি ব্যবহার করতে হবে। অনঅথরাইজড অ্যাক্সেসের ফলাফল হবে 401 Unauthorized রেসপন্স যা নিচে দেখানো হলো।
