I need to do something fairly simple: in my ASP.NET MVC application, I want to set a custom IIdentity / IPrincipal. Whichever is easier / more suitable. I want to extend the default so that I can call something like
User.Identity.Role. Nothing fancy, just some extra properties.
I’ve read tons of articles and questions but I feel like I’m making it harder than it actually is. I thought it would be easy. If a user logs on, I want to set a custom IIdentity. So I thought, I will implement
Application_PostAuthenticateRequest in my global.asax. However, that is called on every request, and I don’t want to do a call to the database on every request which would request all the data from the database and put in a custom IPrincipal object. That also seems very unnecessary, slow, and in the wrong place (doing database calls there) but I could be wrong. Or where else would that data come from?
So I thought, whenever a user logs in, I can add some necessary variables in my session, which I add to the custom IIdentity in the
Application_PostAuthenticateRequest event handler. However, my
null there, so that is also not the way to go.
I’ve been working on this for a day now and I feel I’m missing something. This shouldn’t be too hard to do, right? I’m also a bit confused by all the (semi)related stuff that comes with this.
FormsAuthentication…. Am I the only one who finds all this very confusing?
If someone could tell me a simple, elegant, and efficient solution to store some extra data on a IIdentity without all the extra fuzz.. that would be great! I know there are similar questions on SO but if the answer I need is in there, I must’ve overlooked.