我一直在寻找很多教程,并且他们总是说asp.net Core cookie authentication
用户在具有会话ID的Session对象中在服务器端保持身份验证。但是在CookieAuthenticationHandler.cs SignInAsync
中仅在Options.SessionStore
存在时保存sessionId,如果不是这种情况,我认为在每个请求中都发送所有加密的声明而无需将所有数据存储到{ {1}}(与令牌身份验证一样)。所以,有人可以向我澄清一下。
CookieAuthenticationHandler.cs源代码;
Session object
答案 0 :(得分:0)
CookieAuthentication可以在没有启用Session的情况下正常工作。
所有声明都被序列化到cookie中,并在每次请求时由Authentication中间件反序列化为ClaimsPrinicpal。
因此,如果您指的是无状态,因为不需要会话状态,是的,状态在cookie中,随每个请求传递。
答案 1 :(得分:0)
没有
要证明这一点,请创建一个新应用。注册新用户。删除数据库并重新创建它。当您返回到应用程序时,您将被视为仍然经过身份验证。
如果有的话,cookie只是用作超出会话的缓存。与任何缓存一样,您必须检查它是否过时,这意味着在客户端和服务器之间同步状态。
而且,正如Phil Karlton所说,计算机科学中只有两件难事:缓存失效和命名事物。
实现无国籍状态应被视为目标,而不是宗教任务。
答案 2 :(得分:0)
默认情况下,没有安装Session,它是无状态的。
一个简单的测试来证明它: