Mendapatkan Maklumat Pengguna Semasa dengan Selamat dalam Teras ASP.NET
Mengetahui identiti pengguna yang sedang log masuk adalah penting untuk membina aplikasi Teras ASP.NET yang selamat dan diperibadikan. Hartanah HttpContext.User
menawarkan banyak tuntutan tentang pengguna yang disahkan.
Walau bagaimanapun, mengakses terus HttpContext
dalam pembina pengawal selalunya menghasilkan hasil batal kerana pembina menjalankan sebelum konteks permintaan HTTP disediakan.
Amalan Terbaik: Mengakses Identiti Pengguna dalam Kaedah Tindakan
Kaedah yang paling boleh dipercayai adalah untuk mendapatkan semula butiran identiti pengguna dalam kaedah tindakan pengawal anda. Ini menjamin bahawa HttpContext
diisi dengan betul dengan data pengguna semasa pemprosesan permintaan.
Sebagai contoh, untuk mendapatkan ID pengguna:
<code class="language-csharp">public ActionResult Index() { string userId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value; // Further processing of user ID and claims... return View(); }</code>
Alternatif: Menggunakan IHttpContextAccessor untuk Akses Pembina
Jika anda memerlukan maklumat identiti pengguna dalam pembina pengawal, manfaatkan antara muka IHttpContextAccessor
. Antara muka ini menyediakan akses kepada konteks HTTP semasa tanpa mengira peringkat kitaran hayat pengawal.
Berikut ialah cara untuk melaksanakan perkara ini:
IHttpContextAccessor
ke dalam pembina pengawal anda.HttpContext
.<code class="language-csharp">public Controller(IHttpContextAccessor httpContextAccessor) { string userId = httpContextAccessor.HttpContext?.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; // Subsequent use of user ID and claims... }</code>
Ingat untuk mendaftar IHttpContextAccessor
dalam kaedah Startup.ConfigureServices
anda:
<code class="language-csharp">public void ConfigureServices(IServiceCollection services) { services.AddHttpContextAccessor(); // ... other services }</code>
Menggunakan operator bersyarat nol (?.
) membantu menghalang pengecualian jika HttpContext
atau tuntutan adalah batal. Pilih kaedah yang paling sesuai dengan keperluan anda, utamakan akses kaedah tindakan untuk kebolehpercayaan.
Atas ialah kandungan terperinci Bagaimana untuk Mengambil Identiti Pengguna Semasa dengan Amanah dalam Teras ASP.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!