ASP.NET MVC 5中的ClaimsIdentity

时间:2013-10-28 22:13:04

标签: asp.net asp.net-mvc claims-based-identity owin asp.net-identity

我正在研究ASP.NET MVC 5身份验证的新功能,并注意到现在所有内容都是 ClaimsIdentity 。我想知道这些值存储在哪里:

会话,缓存或Cookie本身。

如果它存储在cookie中,那么在超出cookie的大小限制之前,您可以存储的声明数量有明显的限制。

3 个答案:

答案 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数据库中。