ASP.NET Core Identity একটি শক্তিশালী ফ্রেমওয়ার্ক যা Authentication এবং Authorization সিস্টেম সহজভাবে পরিচালনা করতে সাহায্য করে। এটি user registration, login, role management, এবং password recovery সহ অনেক গুরুত্বপূর্ণ সিকিউরিটি ফিচার প্রোভাইড করে। ASP.NET Core Identity ব্যবহার করে ডেভেলপাররা তাদের ওয়েব অ্যাপ্লিকেশনগুলোর জন্য নিরাপদ এবং স্কেলেবল ইউজার অথেন্টিকেশন ও অথোরাইজেশন সিস্টেম তৈরি করতে পারেন।
ASP.NET Core Identity ফ্রেমওয়ার্ক ডিফল্টভাবে একটি SQL ডেটাবেস ব্যবহার করে ইউজার ডেটা সংরক্ষণ করে, কিন্তু আপনি চাইলে অন্য ডেটাবেস সিস্টেমও ব্যবহার করতে পারবেন। এটি Microsoft.AspNetCore.Identity প্যাকেজের মাধ্যমে ইমপ্লিমেন্ট করা হয় এবং সাধারণত একটি DbContext ক্লাসের মাধ্যমে ডেটাবেসে ব্যবহৃত হয়।
ASP.NET Core Identity ফ্রেমওয়ার্ক ব্যবহার শুরু করার জন্য কিছু নির্দিষ্ট স্টেপ অনুসরণ করতে হয়।
প্রথমে আপনাকে Microsoft.AspNetCore.Identity.EntityFrameworkCore প্যাকেজটি ইনস্টল করতে হবে, যা Identity সিস্টেমের সঙ্গে Entity Framework এর ইন্টিগ্রেশন প্রদান করে। Visual Studio-তে NuGet Package Manager ব্যবহার করে এটি ইনস্টল করা যেতে পারে।
Install-Package Microsoft.AspNetCore.Identity.EntityFrameworkCore
IdentityDbContext ক্লাসটি ডিফল্টভাবে ব্যবহার করা হয়, যা Identity সম্পর্কিত ডেটা সঞ্চয় এবং পরিচালনা করে। এটি আপনার অ্যাপ্লিকেশন এর DbContext থেকে ইনহেরিট হয়।
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
}
এখানে, ApplicationUser
হলো ইউজার ক্লাস যা আপনি কাস্টমাইজ করতে পারেন।
Startup.cs
ফাইলের মধ্যে Identity কনফিগার করতে হয়। নিচে উদাহরণ দেওয়া হলো:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddControllersWithViews();
}
এখানে AddIdentity
মেথড ব্যবহার করে ApplicationUser
এবং IdentityRole
ক্লাসগুলো কনফিগার করা হয়। এটি ডেটাবেসে ইউজার এবং রোল ম্যানেজমেন্ট সিস্টেম তৈরি করে।
Configure
মেথডে Identity middleware কনফিগার করতে হয়, যা অথেন্টিকেশন এবং অথোরাইজেশন প্রক্রিয়া পরিচালনা করে।
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication(); // Enable Authentication
app.UseAuthorization(); // Enable Authorization
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
UseAuthentication()
এবং UseAuthorization()
মেথডগুলো ব্যবহার করে লগইন এবং অথোরাইজেশন প্রক্রিয়া সম্পাদন করা হয়।
ASP.NET Core Identity ব্যবহার করে কিছু সাধারণ কার্যাবলী:
public class RegisterModel : PageModel
{
private readonly UserManager<ApplicationUser> _userManager;
private readonly SignInManager<ApplicationUser> _signInManager;
public RegisterModel(UserManager<ApplicationUser> userManager, SignInManager<ApplicationUser> signInManager)
{
_userManager = userManager;
_signInManager = signInManager;
}
[BindProperty]
public RegisterInputModel Input { get; set; }
public class RegisterInputModel
{
[Required]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
public string Password { get; set; }
[DataType(DataType.Password)]
public string ConfirmPassword { get; set; }
}
public async Task<IActionResult> OnPostAsync()
{
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = Input.UserName };
var result = await _userManager.CreateAsync(user, Input.Password);
if (result.Succeeded)
{
await _signInManager.SignInAsync(user, isPersistent: false);
return RedirectToPage("/Index");
}
else
{
foreach (var error in result.Errors)
{
ModelState.AddModelError(string.Empty, error.Description);
}
}
}
return Page();
}
}
এটি একটি ইউজার রেজিস্ট্রেশন পেজের উদাহরণ, যেখানে UserManager
ব্যবহার করে নতুন ইউজার তৈরি করা হয়।
public class LoginModel : PageModel
{
private readonly SignInManager<ApplicationUser> _signInManager;
public LoginModel(SignInManager<ApplicationUser> signInManager)
{
_signInManager = signInManager;
}
[BindProperty]
public LoginInputModel Input { get; set; }
public class LoginInputModel
{
[Required]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
public string Password { get; set; }
}
public async Task<IActionResult> OnPostAsync()
{
if (ModelState.IsValid)
{
var result = await _signInManager.PasswordSignInAsync(Input.UserName, Input.Password, false, false);
if (result.Succeeded)
{
return RedirectToPage("/Index");
}
else
{
ModelState.AddModelError(string.Empty, "Invalid login attempt.");
}
}
return Page();
}
}
এটি একটি লগইন পেজের উদাহরণ, যেখানে SignInManager ব্যবহার করে ইউজারের লগইন যাচাই করা হয়।
ASP.NET Core Identity হলো একটি শক্তিশালী সিকিউরিটি ফ্রেমওয়ার্ক, যা অ্যাপ্লিকেশনগুলিতে ইউজার অথেন্টিকেশন এবং অথোরাইজেশন সহজে এবং নিরাপদভাবে বাস্তবায়ন করতে সহায়তা করে। এটি বিভিন্ন নিরাপত্তা ফিচার যেমন User Registration, Login, Role-based Authorization, Password Recovery, এবং Two-Factor Authentication (2FA) সহ ইউজার ম্যানেজমেন্টের জন্য সম্পূর্ণ সম
াধান প্রদান করে। Identity ফ্রেমওয়ার্ক ব্যবহার করে ডেভেলপাররা তাদের অ্যাপ্লিকেশনগুলির নিরাপত্তা কার্যক্রম শক্তিশালী করতে পারে এবং কাস্টম ইউজার মডেল তৈরি ও কনফিগার করতে পারে।
common.read_more