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