9
ASP.NET MVC-设置自定义IIdentity或IPrincipal
我需要做一些相当简单的事情:在我的ASP.NET MVC应用程序中,我想设置一个自定义的IIdentity / IPrincipal。哪个更容易/更合适。我想扩展默认值,以便可以调用诸如User.Identity.Id和User.Identity.Role。没什么花哨的,只是一些额外的属性。 我读了无数的文章和问题,但是我觉得自己变得比实际困难。我以为会很容易。如果用户登录,我想设置一个自定义的IIdentity。所以我想,我会实施Application_PostAuthenticateRequest在global.asax中。但是,这是在每个请求上都调用的,我不想在每个请求上都对数据库进行调用,这会从数据库请求所有数据并将其放入自定义IPrincipal对象。这似乎也非常不必要,缓慢并且在错误的位置(在此处进行数据库调用),但我可能是错的。还是这些数据从哪里来? 因此,我认为,每当用户登录时,我都可以在会话中添加一些必要的变量,并将其添加到Application_PostAuthenticateRequest事件处理程序中的自定义IIdentity中。但是,我Context.Session在null那里,所以那也不是路。 我已经为此工作了一天,我感觉自己缺少一些东西。这应该不难做,对吧?我对与此附带的所有(半)相关的东西也感到困惑。MembershipProvider,MembershipUser,RoleProvider,ProfileProvider,IPrincipal,IIdentity,FormsAuthentication...。我是唯一一个谁发现这一切非常混乱? 如果有人可以告诉我一个简单,优雅,有效的解决方案,以在IIdentity上存储一些额外的数据而又不引起任何额外的麻烦,那就太好了!我知道在SO上也有类似的问题,但是如果我需要的答案在那里,我一定会忽略。