- Bagaimana saya bisa mendapatkan id dari pengguna yang saat ini login di MVC 5 ? Saya mencoba saran StackOverflow, tetapi tampaknya bukan untuk MVC 5.
- Juga, apa praktik terbaik MVC 5 dalam menetapkan barang kepada pengguna? (misalnya
User
seharusnyaItems
. Haruskah saya menyimpan PenggunaId
diItem
? Dapatkah saya memperluasUser
kelas denganList<Item>
properti navigasi?
Saya menggunakan "Akun Pengguna Perorangan" dari template MVC.
Mencoba ini:
- Bagaimana cara mendapatkan pengguna saat ini di Aplikasi MVC?
- Cara mendapatkan pengguna saat ini di ASP.NET MVC
- Dapatkan id pengguna yang login - ini melempar yang berikut:
'Keanggotaan.GetUser ()' adalah nol.
c#
asp.net
asp.net-mvc
asp.net-mvc-5
asp.net-identity
Adam Szabo
sumber
sumber
HttpContext.Current.User.Identity.Name
adalah nama pengguna yang saat ini dicatatItem
dia menciptakan, tetapi tidak berdasarkan pada nama pengguna (yang mungkin berubah). Itu tidak bekerja dengan cara `HttpContext.Current 'System.Web.HttpContextBase' tidak mengandung definisi untuk 'Current' dan tidak ada metode ekstensi 'Current' menerima argumen pertama dari tipe 'System.Web.HttpContextBase' dapat ditemukan ( apakah Anda melewatkan arahan menggunakan atau referensi rakitan?) `. Apakah Anda yakin solusi Anda untuk MVC 5?Jawaban:
Jika Anda mengode dalam ASP.NET MVC Controller, gunakan
Layak disebutkan itu
User.Identity.IsAuthenticated
danUser.Identity.Name
akan bekerja tanpa menambahkanusing
pernyataan yang disebutkan di atas . TetapiGetUserId()
tidak akan hadir tanpa itu.Jika Anda berada di kelas selain Pengendali, gunakan
Dalam template default MVC 5, ID pengguna adalah GUID yang disimpan sebagai string.
Belum ada praktik terbaik, tetapi temukan beberapa info berharga tentang cara memperpanjang profil pengguna:
Identity
: https://devblogs.microsoft.com/aspnet/introducing-asp-net-identity-a-membership-system-for-asp-net-applications/sumber
GetUserId
merupakan metode ekstensi yang disimpan di bagian bawahAss_Start\IdentityConfig.cs
, di mana pun Anda perlu menggunakannya, jika di ruang nama yang berbeda, Anda harus mengaturusing Microsoft.AspNet.Identity
agar ekstensi tersebut menjadi terlihat.Coba sesuatu seperti:
Bekerja dengan RTM.
sumber
Jika Anda ingin objek ApplicationUser dalam satu baris kode (jika Anda memiliki ASP.NET Identity terinstal), cobalah:
Anda akan membutuhkan pernyataan penggunaan berikut:
sumber
Mendapatkan Id sangat mudah dan Anda telah menyelesaikannya.
Namun pertanyaan kedua Anda sedikit lebih terlibat.
Jadi, ini adalah semua hal pra-rilis sekarang, tetapi masalah umum yang Anda hadapi adalah ketika Anda memperluas pengguna dengan properti baru (atau koleksi Item di pertanyaan Anda).
Di luar kotak Anda akan mendapatkan file yang disebut di
IdentityModel
bawah folder Model (pada saat penulisan). Di sana Anda memiliki beberapa kelas;ApplicationUser
danApplicationDbContext
. Untuk menambahkan koleksiItems
Anda, Anda ingin memodifikasiApplicationUser
kelas, sama seperti yang Anda lakukan jika ini adalah kelas normal yang Anda gunakan dengan Entity Framework. Bahkan, jika Anda melihat sekilas di bawah tenda Anda akan menemukan bahwa semua kelas terkait identitas (Pengguna, Peran dll ...) hanyalah POCO sekarang dengan anotasi data yang sesuai sehingga mereka bermain bagus dengan EF6.Selanjutnya, Anda harus membuat beberapa perubahan pada
AccountController
konstruktor sehingga ia tahu untuk menggunakan DbContext Anda.Sekarang mendapatkan seluruh objek pengguna untuk pengguna login Anda sedikit esoteris jujur.
Baris itu akan menyelesaikan pekerjaan dan Anda akan dapat mengakses
userWithItems.Items
seperti yang Anda inginkan.HTH
sumber
AccountController
?Saya merasakan sakit Anda, saya mencoba melakukan hal yang sama. Dalam kasus saya, saya hanya ingin menghapus pengguna.
Saya telah membuat kelas pengendali basis yang diwarisi oleh semua pengontrol saya. Di dalamnya saya menimpa
OnAuthentication
dan mengaturfilterContext.HttpContext.User to null
Itu yang terbaik yang saya berhasil sejauh ini ...
sumber
sumber
jika ada orang lain yang mengalami situasi ini: saya membuat verifikasi email untuk masuk ke aplikasi saya sehingga pengguna saya belum masuk, namun saya menggunakan di bawah ini untuk memeriksa email yang dimasukkan pada login yang merupakan variasi dari solusi @firecape
Anda juga membutuhkan yang berikut ini:
dan
sumber
Dalam. Net MVC5 inti 2.2, saya menggunakan HttpContext.User.Identity.Name. Ini berhasil untuk saya.
sumber
Ini adalah bagaimana saya mendapat ID AspNetUser dan menampilkannya di halaman rumah saya
Saya menempatkan kode berikut dalam metode HomeController Index () saya
Di halaman tampilan panggil saja
Jalankan proyek dan Anda akan dapat melihat userId Anda
sumber