我目前正在创建 Blazor WASM Web 应用程序,我偶然发现了以下内容:
我可以在 Web API 端点中使用以下几行将匿名用户验证为“Alice”(显然没有在数据库中存储任何内容):
var user = new ApplicationUser();
user.Email = "[email protected]";
user.UserName = "Alice";
await _signInManager.SignInAsync(user, false);
我的问题是:
SignInManager
如何在不将任何内容存储到数据库的情况下跟踪Alice?SignInManager
会删除“缓存”用户吗?SignInManager 如何在不将任何内容存储到数据库中的情况下跟踪 Alice?
它会在cookie中生成一个值,如果您不编写任何逻辑来基于此cookie存储某些内容,则它不会存储到数据库中。
用户以这种方式进行身份验证需要多长时间?只要客户端保留cookie就可以了?直到服务器重新启动?
检查生成的cookie:
这是一个会话cookie,通常情况下,会话cookie会在客户端关闭时被删除。 但是,不同的浏览器可能会以不同的方式处理会话cookie。
SignInManager 会在一段时间后删除“缓存”用户吗?
当cookie过期时,用户就会被错过。
L如果是这样(3.),我是否能够提供一个端点,如果用户仍然拥有所说的 cookie,我是否能够自动将“匿名”身份“Alice”重新分配给用户?
一般情况下,不需要做这件事。您可以直接在 cookie 中生成一个名称来识别哪个用户正在访问您的应用程序,而无需调用 _signInManager。