我正在研究ASP.NET MVC 5身份验证的新功能,并注意到现在所有内容都是 ClaimsIdentity 。我想知道这些值存储在哪里:
会话,缓存或Cookie本身。
如果它存储在cookie中,那么在超出cookie的大小限制之前,您可以存储的声明数量有明显的限制。
答案 0 :(得分:3)
ClaimsIdentity本身没有存储机制。但是,如果您使用OWIN cookie中间件,是的,它存储在cookie中。是的 - 有一个限制。
答案 1 :(得分:3)
如上所述,来自各种来源的声明可以通过默认情况下使用OWIN在身份验证过程中创建的cookie在会话之间保留。这通常在\ App_Start \ Startup.Auth.cs中配置。您可以设置类似于cookie过期的时间,是否需要滑动过期(返回访问时更新cookie超时),身份验证/授权端点等等。后面的部分允许您在ClaimsPrincipal期间提供额外的声明。和ClaimsIdentity创建过程。如果过期,您只需为用户会话执行一次此操作。在随后返回您的站点时,OWIN中间件将解析cookie并重新创建此步骤中的所有声明。
您不必担心cookie大小,新的OWIN auth中间件实现了cookie分块(它目前可以从预发布源获得 - 稳定版本没有块)。
我们已经在我们的企业中实现了这一点,我们有几个声明来源:我们的内部单点登录服务,活动目录和我们自己的应用程序的数据库(关于我们要跟踪的用户的角色和其他属性)。
答案 2 :(得分:0)
因此,默认情况下,MVC5模板会从数据库中生成ClaimsIdentity,并将其持久保存为有效的cookie表单。但是默认情况下,用户数据存储在SQL数据库中。