ASP.Net MVC-তে Authentication এবং Authorization ফিল্টার দুটি গুরুত্বপূর্ণ নিরাপত্তা উপাদান। Authentication ফিল্টার নিশ্চিত করে ব্যবহারকারী অ্যাপ্লিকেশনে প্রবেশ করার অনুমোদিত কিনা, আর Authorization ফিল্টার ব্যবহারকারীর নির্দিষ্ট অ্যাকশন বা রিসোর্সে অ্যাক্সেস অনুমোদন নিয়ন্ত্রণ করে। এই ফিল্টারগুলো অ্যাপ্লিকেশনের নিরাপত্তা বৃদ্ধিতে গুরুত্বপূর্ণ ভূমিকা পালন করে।
Authentication হলো প্রক্রিয়া যা নিশ্চিত করে যে ব্যবহারকারী অ্যাপ্লিকেশনে প্রবেশ করার জন্য বৈধ। Authentication ফিল্টার ASP.Net MVC 5 থেকে অন্তর্ভুক্ত করা হয়েছে, যা Global, Controller, বা Action লেভেলে প্রয়োগ করা যায়।
নিচে একটি কাস্টম Authentication ফিল্টার তৈরি করার উদাহরণ দেওয়া হলো:
using System.Web.Mvc;
public class CustomAuthenticationFilter : ActionFilterAttribute, IAuthenticationFilter
{
public void OnAuthentication(AuthenticationContext filterContext)
{
var user = filterContext.HttpContext.User;
if (user == null || !user.Identity.IsAuthenticated)
{
filterContext.Result = new HttpUnauthorizedResult();
}
}
public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext)
{
// Optional: Additional actions after authentication challenge
}
}
ফিল্টার প্রয়োগ করা:
[CustomAuthenticationFilter]
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
Authorization ফিল্টার নির্ধারণ করে ব্যবহারকারী নির্দিষ্ট অ্যাকশন বা রিসোর্সে অ্যাক্সেস করতে পারবে কিনা। এটি AuthorizeAttribute ব্যবহার করে সহজে প্রয়োগ করা যায়।
AuthorizeAttribute একটি বিল্ট-ইন ফিল্টার, যা ব্যবহারকারীর অ্যাক্সেস নিয়ন্ত্রণের জন্য ব্যবহৃত হয়।
[Authorize]
public class AdminController : Controller
{
public IActionResult Dashboard()
{
return View();
}
}
নির্দিষ্ট রোল বা ব্যবহারকারীদের জন্য প্রয়োগ করা:
[Authorize(Roles = "Admin")]
public class AdminController : Controller
{
public IActionResult Dashboard()
{
return View();
}
}
[Authorize(Users = "specificUser@example.com")]
public class UserController : Controller
{
public IActionResult Profile()
{
return View();
}
}
প্রয়োজন অনুযায়ী একটি কাস্টম Authorization ফিল্টার তৈরি করা যায়:
using System.Web.Mvc;
public class CustomAuthorizationFilter : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var user = httpContext.User;
return user != null && user.Identity.IsAuthenticated && user.IsInRole("Admin");
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new RedirectResult("/Account/Login");
}
}
কন্ট্রোলারে প্রয়োগ:
[CustomAuthorizationFilter]
public class AdminController : Controller
{
public IActionResult Dashboard()
{
return View();
}
}
Global Level:
Global ফিল্টার হিসেবে Authentication এবং Authorization ফিল্টার যোগ করতে পারেন Global.asax বা FilterConfig.cs-এ:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new AuthorizeAttribute());
filters.Add(new CustomAuthenticationFilter());
}
Controller Level:
কোনো নির্দিষ্ট কন্ট্রোলারে ফিল্টার প্রয়োগ করতে কন্ট্রোলারের উপরে অ্যাট্রিবিউট যুক্ত করুন।
Action Level:
নির্দিষ্ট অ্যাকশনে ফিল্টার প্রয়োগ করতে অ্যাকশনের উপরে অ্যাট্রিবিউট যুক্ত করুন।
বিষয় | Authentication | Authorization |
---|---|---|
উদ্দেশ্য | ব্যবহারকারী বৈধ কিনা তা যাচাই করে। | ব্যবহারকারী নির্দিষ্ট রিসোর্স বা অ্যাকশনে অ্যাক্সেস করতে পারবে কিনা তা নিয়ন্ত্রণ করে। |
প্রয়োগের স্তর | প্রথম ধাপে (লগইন প্রক্রিয়ার সময়)। | পরবর্তী ধাপে (অ্যাক্সেস নিয়ন্ত্রণ)। |
ফিল্টার টাইপ | IAuthenticationFilter | IAuthorizationFilter |
ASP.Net MVC-তে Authentication এবং Authorization ফিল্টার অ্যাপ্লিকেশনের নিরাপত্তা নিশ্চিত করতে গুরুত্বপূর্ণ ভূমিকা পালন করে। Authentication ব্যবহারকারীর পরিচয় যাচাই করে এবং Authorization ব্যবহারকারীর অ্যাক্সেস নিয়ন্ত্রণ করে। বিল্ট-ইন এবং কাস্টম ফিল্টার ব্যবহার করে অ্যাপ্লিকেশনকে আরও সুরক্ষিত করা যায়।
common.read_more