ASP.NET Identity হল একটি ফ্রেমওয়ার্ক যা ASP.NET অ্যাপ্লিকেশনগুলিতে ব্যবহারকারী এবং তাদের ভূমিকা (roles), অথেনটিকেশন (authentication), এবং অথরাইজেশন (authorization) পরিচালনা করার জন্য ব্যবহৃত হয়। Entity Framework (EF) এর সাথে ASP.NET Identity ইন্টিগ্রেট করলে, আপনি ডেটাবেসে ব্যবহারকারীর তথ্য সঞ্চয় এবং ব্যবস্থাপনা করতে পারবেন, যেমন পাসওয়ার্ড, রোল, লগইন তথ্য ইত্যাদি।
ASP.NET Identity এবং Entity Framework একসাথে কাজ করে ব্যবহারকারীর সুরক্ষা এবং অ্যাপ্লিকেশন নিরাপত্তা নিশ্চিত করতে। ASP.NET Identity সাধারণত EF Core বা EF 6 এর উপর ভিত্তি করে কাজ করে, এবং এটি ডেটাবেস টেবিল তৈরি এবং পরিচালনা করার জন্য EF এর মাইগ্রেশন সিস্টেম ব্যবহার করে।
ASP.NET Identity কয়েকটি গুরুত্বপূর্ণ উপাদান দিয়ে গঠিত:
EF এর সাথে ASP.NET Identity ইন্টিগ্রেট করার জন্য, প্রথমে Identity প্যাকেজ ইনস্টল করতে হবে এবং তারপর ডেটাবেস কনটেক্সট (DbContext) কনফিগার করতে হবে।
NuGet Package Manager ব্যবহার করে ASP.NET Identity প্যাকেজ ইনস্টল করতে হবে।
NuGet প্যাকেজ ইনস্টল করা:
Visual Studio তে NuGet Package Manager ব্যবহার করে ASP.NET Identity ইনস্টল করতে নিচের কমান্ডটি চালান:
Install-Package Microsoft.AspNetCore.Identity.EntityFrameworkCore
এই প্যাকেজটি ASP.NET Identity এবং EF Core এর মধ্যে ইন্টিগ্রেশন করতে সহায়ক হবে।
ApplicationDbContext হল একটি ক্লাস যা ASP.NET Identity এবং EF Core ডেটাবেস কনটেক্সট ম্যানেজ করে। এটি IdentityDbContext ক্লাস থেকে ইনহেরিট করা হয় এবং Identity সম্পর্কিত টেবিলগুলো (যেমন, Users, Roles) তৈরি করতে সাহায্য করে।
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
// অন্যান্য DbSet গুলি এখানে যুক্ত করুন
public DbSet<Product> Products { get; set; }
}
এখানে, ApplicationUser
হল IdentityUser থেকে ইনহেরিট করা কাস্টম ইউজার ক্লাস যা আপনি ব্যবহারকারীদের সম্পর্কিত অতিরিক্ত তথ্য (যেমন, Full Name) সঞ্চয় করার জন্য কাস্টমাইজ করতে পারেন।
ApplicationUser ক্লাসটি ASP.NET Identity এর ইউজার মডেল, এবং এটিতে আপনি অতিরিক্ত প্রপার্টি যোগ করতে পারেন যেমন, নাম, জন্মতারিখ ইত্যাদি। এটি IdentityUser থেকে ইনহেরিট করা হয়।
public class ApplicationUser : IdentityUser
{
public string FullName { get; set; }
}
ASP.NET Core অ্যাপ্লিকেশনটি শুরু করার সময়, Identity কনফিগারেশনটি Startup.cs ফাইলে করতে হয়। এখানে AddIdentity
মেথড ব্যবহার করা হয় Identity কনফিগার করতে।
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddControllersWithViews();
}
}
এখানে, ApplicationDbContext এবং ApplicationUser যুক্ত করা হয়েছে এবং AddEntityFrameworkStores<ApplicationDbContext>()
মেথডটি EF এর সাথে Identity ইন্টিগ্রেট করার জন্য ব্যবহার করা হয়েছে।
EF Core ব্যবহার করার ফলে ASP.NET Identity ডেটাবেস টেবিলগুলো তৈরি করার জন্য মাইগ্রেশন ব্যবহার করতে হবে। মাইগ্রেশনগুলির মাধ্যমে Identity সম্পর্কিত টেবিলগুলো ডেটাবেসে তৈরি হবে, যেমন AspNetUsers
, AspNetRoles
, AspNetUserRoles
ইত্যাদি।
মাইগ্রেশন তৈরি করা:
Add-Migration InitialCreate
ডেটাবেস আপডেট করা:
Update-Database
এটি EF Core মাইগ্রেশন ব্যবহার করে ডেটাবেসে ASP.NET Identity এর জন্য প্রয়োজনীয় টেবিলগুলো তৈরি করবে।
ASP.NET Identity এর মাধ্যমে ইউজার সাইন ইন এবং সাইন আউট করতে SignInManager ব্যবহার করা হয়।
var result = await _signInManager.PasswordSignInAsync(user, password, rememberMe: false, lockoutOnFailure: false);
if (result.Succeeded)
{
// সাইন ইন সফল
}
await _signInManager.SignOutAsync();
ASP.NET Identity এ রোল (roles) ব্যবহারের মাধ্যমে আপনি বিভিন্ন ইউজারের জন্য বিভিন্ন অ্যাকসেস পারমিশন সেট করতে পারেন। রোল যোগ করতে এবং ইউজারের সাথে রোল অ্যাসাইন করতে RoleManager ব্যবহার করা হয়।
var roleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();
if (!await roleManager.RoleExistsAsync("Admin"))
{
var role = new IdentityRole("Admin");
await roleManager.CreateAsync(role);
}
var user = await _userManager.FindByNameAsync("username");
await _userManager.AddToRoleAsync(user, "Admin");
EF এর সাথে ASP.NET Identity ইন্টিগ্রেট করলে, আপনি অথেনটিকেশন এবং অথরাইজেশন এর প্রক্রিয়াগুলি সুষ্ঠুভাবে পরিচালনা করতে পারবেন। Identity প্যাকেজটি ডেটাবেসে ইউজার এবং রোল তথ্য সংরক্ষণ করার সুবিধা দেয়, এবং EF Core মাইগ্রেশন ব্যবহারের মাধ্যমে Identity টেবিলগুলি সহজেই তৈরি করা যায়। Identity Manager, RoleManager, এবং SignInManager এর মতো টুলস ব্যবহার করে ইউজার ম্যানেজমেন্ট আরও শক্তিশালী হয়।
common.read_more