场景只是开发计算机上的问题。
我在"localhost"下在我的开发机器上运行多个不同且完全独立的 ASP.NET Core 2.2 项目。
成功验证并登录一个项目后,我将无法再登录到其他项目。 我假设这与身份验证饼干有关。
所有项目都具有相同的基本身份验证。
services.AddAuthentication();
services.ConfigureApplicationCookie(opt =>
{
opt.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.None;
opt.Cookie.HttpOnly = true;
opt.Cookie.Expiration = TimeSpan.FromHours(4);
opt.ExpireTimeSpan = TimeSpan.FromHours(4);
});
登录调用成功:
result = await _signInManager.PasswordSignInAsync(portal.ID, model.Username, model.Password, model.RememberMe, true, loggedInUser);
但是,一旦用户被重定向到需要身份验证的主页,我在调试输出中看到以下内容:
Microsoft.AspNetCore.Authorization.DefaultAuthorizationService: Information: Authorization failed.
。用户被踢回登录页面。
有没有办法解决这个问题?
我会考虑在不同的域下运行您的网站,然后将域映射到主机文件中的 localhost(或者更确切地说,127.0.0.1(。
此问题解释了技术:将子域添加到本地主机 URL
以下是一篇解释不同操作系统的主机文件的文章:https://www.howtogeek.com/howto/27350/beginner-geek-how-to-edit-your-hosts-file/
问题解决了。
services.ConfigureApplicationCookie(opt =>
{
opt.Cookie.Name = "Unique Value Per App";
});
我所要做的就是在SO上发帖,问题就解决了!