Mengakses pengguna semasa dalam pembina pengawal Teras ASP.NET boleh memberikan cabaran kerana potensi nilai null
HttpContext
. Artikel ini menawarkan penyelesaian yang berkesan untuk mendapatkan maklumat pengguna dengan cekap tanpa panggilan berulang.
Pendekatan biasa, menggunakan HttpContext.User.GetUserId()
, gagal dalam pembina. Untuk mengoptimumkan perolehan data pengguna, kaedah berpusat lebih diutamakan.
Berikut ialah cara untuk menangani perkara ini:
Dalam Tindakan Pengawal: Gunakan HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value
untuk mendapatkan ID pengguna.
Dalam Pembina (Memanfaatkan IHttpContextAccessor):
IHttpContextAccessor
dalam projek anda dan daftarkannya dalam ConfigureServices
.IHttpContextAccessor
ke dalam pembina pengawal anda dan akses ID pengguna seperti ini:<code class="language-csharp">public Controller(IHttpContextAccessor httpContextAccessor) { var userId = httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; }</code>
Perhatikan penambahan operator bersyarat nol (?.
) untuk mengendalikan potensi nilai nol dengan anggun. Ini menghalang pengecualian jika User
atau FindFirst
mengembalikan null.
Atas ialah kandungan terperinci Bagaimana untuk Mengakses Pengguna Semasa dalam Pembina Pengawal Teras ASP.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!