Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mengambil Identiti Pengguna Semasa dengan Amanah dalam Teras ASP.NET?

Bagaimana untuk Mengambil Identiti Pengguna Semasa dengan Amanah dalam Teras ASP.NET?

Mary-Kate Olsen
Lepaskan: 2025-01-13 12:23:43
asal
562 orang telah melayarinya

How to Reliably Retrieve the Current User's Identity in ASP.NET Core?

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>
Salin selepas log masuk

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:

  1. Suntikan IHttpContextAccessor ke dalam pembina pengawal anda.
  2. Akses tuntutan pengguna melalui harta 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>
Salin selepas log masuk

Ingat untuk mendaftar IHttpContextAccessor dalam kaedah Startup.ConfigureServices anda:

<code class="language-csharp">public void ConfigureServices(IServiceCollection services)
{
    services.AddHttpContextAccessor();
    // ... other services
}</code>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan