Мені потрібно зробити щось досить просте: у своєму додатку ASP.NET MVC я хочу встановити користувальницьку IIdentity / IPrincipal. Що б легше / придатніше. Я хочу розширити за замовчуванням, щоб я міг викликати щось на кшталт User.Identity.Id
і User.Identity.Role
. Нічого фантазійного, лише деякі зайві властивості.
Я прочитав багато статей і питань, але відчуваю, що мені це важче, ніж є насправді. Я думав, що це буде легко. Якщо користувач входить у систему, я хочу встановити спеціальну IIdentity. Тому я подумав, що буду реалізовувати Application_PostAuthenticateRequest
у своєму global.asax. Однак, це викликається в кожному запиті, і я не хочу робити дзвінки в базу даних за кожним запитом, який вимагає всіх даних з бази даних і вводить у користувацький об'єкт IPrincipal. Це також здається дуже непотрібним, повільним, і в неправильному місці (виконуючи дзвінки до бази даних), але я можу помилитися. Або звідки ще беруться ці дані?
Тому я думав, щоразу, коли користувач увійде в систему, я можу додати кілька необхідних змінних у своєму сеансі, які я додаю до користувацької IIdentity в Application_PostAuthenticateRequest
обробнику подій. Однак моє Context.Session
є null
, тож це теж не шлях.
Я працюю над цим вже день і відчуваю, що чогось мені не вистачає. Це не повинно бути занадто важким, чи не так? Я також трохи збентежений усіма (напів) пов'язаними матеріалами, які поставляються з цим. MembershipProvider
, MembershipUser
, RoleProvider
, ProfileProvider
, IPrincipal
, IIdentity
, FormsAuthentication
.... Am Я єдиний, хто знаходить все це дуже заплутаним?
Якби хтось міг сказати мені просте, елегантне та ефективне рішення для зберігання додаткових даних на IIdentity без зайвих нечітких .. це було б чудово! Я знаю, що є подібні питання щодо ТА, але якщо відповідь, що мені потрібна, є там, я, мабуть, не помітив уваги.
MemberShip...
, Principal
, Identity
. ASP.NET повинен зробити цей простіший, простіший і максимум два підходи для роботи з аутентифікацією.