Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Cekap Mengakses Maklumat Pengguna Semasa dalam Pengawal Skop Permintaan Teras ASP.NET?
Mendapatkan semula butiran pengguna yang disahkan, seperti alamat e-mel mereka, adalah penting dalam aplikasi web. Walau bagaimanapun, mengurus ini dengan cekap dalam pengawal skop permintaan Teras ASP.NET memerlukan pertimbangan yang teliti.
Masalah: Mengakses terus HttpContext.User
dalam pembina pengawal selalunya mengakibatkan HttpContext
batal, menghalang pengambilan maklumat pengguna. Mengambil data ini berulang kali dalam setiap kaedah tindakan adalah tidak cekap.
Penyelesaian: Manfaatkan atribut [Authorize]
dan perkhidmatan IHttpContextAccessor
.
Langkah untuk Mengakses Maklumat Pengguna:
IHttpContextAccessor
dalam Startup.cs
anda (atau Program.cs
dalam .NET 6 dan kemudian):<code class="language-csharp">public void ConfigureServices(IServiceCollection services) { services.AddHttpContextAccessor(); // ... other services }</code>
IHttpContextAccessor
ke dalam pembina pengawal anda:<code class="language-csharp">public class MyController : Controller { private readonly IHttpContextAccessor _httpContextAccessor; public MyController(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; //Retrieve and store user ID var userId = _httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; //Further processing of userId as needed... } // ... your controller actions ... }</code>
Pendekatan ini membolehkan anda mengakses identiti pengguna dalam pembina pengawal. Anda kemudiannya boleh menyimpan maklumat ini untuk kegunaan kemudian dalam pengawal, meningkatkan kecekapan dan mengelakkan panggilan berulang ke HttpContext.User
. Penggunaan pengendali tanpa syarat (?.
) mengendalikan kes di mana tuntutan mungkin tidak ada.
Atas ialah kandungan terperinci Bagaimana untuk Cekap Mengakses Maklumat Pengguna Semasa dalam Pengawal Skop Permintaan Teras ASP.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!