【发布时间】:2022-10-21 11:46:02
【问题描述】:
我有几个 asp.net Web API 微服务,我想使用所谓的使用 Cookie 的单点登录操作。因此,当我登录我的身份 API 时,所有其他 API 都会知道谁登录了。
现在 - 这样做时出现了几个问题: 我正在使用这种方法(和 Identity SignInManager 方法 PasswordSignInAsync):
builder.Services.ConfigureApplicationCookie(config =>
{
config.Cookie.Name = "Identity.Cookie";
config.LoginPath = "/User/Login";
config.LogoutPath = "/User/Logout";
});
...登录并生成 cookie。
现在,我搜索了如何在其他 API 之间共享这个 cookie 的主题,但我震惊地发现这个 cookie 真的被共享了。而且我没有任何特定的 cookie 共享功能。这是我在不同端口上运行的 2 个 API 的屏幕截图,它们都具有相同的 cookie。我什至比较了它们的价值和它的相同。 API 在同一个解决方案中。
现在,问题是 2 - 为什么这个 cookie 在 API 之间共享,我如何从中读取登录用户的信息(声明)?
我尝试使用具有 3 个抽象方法的 CookieHandler 抽象类。但问题是这些方法的 HttpContext 参数来自 System.Web 命名空间,而 HttpContext 属性来自 AspNetCore.Mvc。
任何建议将不胜感激,因为我不知道如何从 cookie 中获取身份。请记住,只有 Identity.API 具有 SignInManager/UserManager。
【问题讨论】:
标签: asp.net asp.net-web-api asp.net-identity microservices