Saya perlu melakukan sesuatu yang cukup sederhana: dalam aplikasi ASP.NET MVC saya, saya ingin menetapkan kebiasaan IIdentity / IPrincipal. Mana yang lebih mudah / lebih cocok. Saya ingin memperpanjang default sehingga saya bisa memanggil sesuatu seperti User.Identity.Id
dan User.Identity.Role
. Tidak ada yang mewah, hanya beberapa properti tambahan.
Saya telah membaca banyak artikel dan pertanyaan, tetapi saya merasa saya membuatnya lebih sulit dari yang sebenarnya. Saya pikir itu akan mudah. Jika pengguna log on, saya ingin mengatur IIdentity kustom. Jadi saya pikir, saya akan menerapkannya Application_PostAuthenticateRequest
di global.asax saya. Namun, itu dipanggil pada setiap permintaan, dan saya tidak ingin melakukan panggilan ke database pada setiap permintaan yang akan meminta semua data dari database dan memasukkan objek IPrincipal kustom. Itu juga tampaknya sangat tidak perlu, lambat, dan di tempat yang salah (melakukan panggilan basis data di sana) tetapi saya bisa saja salah. Atau dari mana lagi data itu berasal?
Jadi saya pikir, setiap kali pengguna login, saya bisa menambahkan beberapa variabel yang diperlukan dalam sesi saya, yang saya tambahkan ke kustom IIdentity di Application_PostAuthenticateRequest
pengendali event. Namun, saya Context.Session
adalah null
ada, sehingga juga tidak cara untuk pergi.
Saya sudah mengerjakan ini selama sehari sekarang dan saya merasa saya kehilangan sesuatu. Ini seharusnya tidak terlalu sulit untuk dilakukan, bukan? Saya juga agak bingung dengan semua hal (semi) terkait yang datang dengan ini. MembershipProvider
, MembershipUser
, RoleProvider
, ProfileProvider
, IPrincipal
, IIdentity
, FormsAuthentication
.... Am saya satu-satunya yang menemukan semua ini sangat membingungkan?
Jika seseorang bisa memberi tahu saya solusi sederhana, elegan, dan efisien untuk menyimpan beberapa data tambahan pada IIdentity tanpa semua fuzz ekstra .. itu akan luar biasa! Saya tahu ada pertanyaan serupa tentang SO, tetapi jika jawaban yang saya butuhkan ada di sana, saya pasti mengabaikannya.
MemberShip...
, Principal
, Identity
. ASP.NET harus membuat ini lebih mudah, lebih sederhana dan paling banyak dua pendekatan untuk menangani otentikasi.