c# - 当用户使用 ASP.NET Core Identity 登录网站时,他在访问该网站的所有浏览器中都已登录
问题描述
我有一个 ASP.NET Core 2.2 应用程序在 Azure App Services 的 B1 实例中运行。如果我登录该网站,并在另一台机器上打开它,我也登录了该机器,包括访问受授权保护的所有页面。当我在第二台机器上注销时,我不会自动重新登录,直到我清除浏览器缓存并重新启动浏览器。
此处描述了一个类似的问题,但从未真正得到解答:ASP.NET Core identity shared across browser
这种行为似乎与在 Azure 应用服务 (Linux) 中运行有关。我之前在普通 Linux VM(Ubuntu 18.04,官方 MS Docker 映像)上的 Docker 映像中运行了该站点,并且没有遇到这个问题。
以下是 Startup.cs 中可能相关的所有代码:
public void ConfigureServices(IServiceCollection services)
{
[...]
services.Configure<CookiePolicyOptions>(
options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = _ => false;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
[...]
services.AddIdentity<User, IdentityRole>()
.AddErrorDescriber<TopikonIdentityErrorDescriber>()
.AddEntityFrameworkStores<TopikonContext>()
.AddDefaultTokenProviders();
services.AddAuthentication();
services.AddAuthorization(
options =>
{
options.AddPolicy(
TopikonPolicies.ControlPanel,
policy => policy
.RequireRole(TopikonRoles.ControlCenterAccess));
});
services .AddMvc()
.AddRazorPagesOptions(
options =>
{
options.AllowAreas = true;
options.Conventions.AuthorizeFolder("/");
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
[...] }
public static void Configure(IApplicationBuilder app, IHostingEnvironment env){
[...]
app.UseCookiePolicy();
app.UseAuthentication();
app.UseSession();
app.UseMvc();
}
应用服务身份验证已打开并设置为“允许匿名”。我试着关掉它,但结果是一样的。我希望用户只在他们正在使用的机器上登录,而不是向访问该站点的每个人提供他们的登录信息。不幸的是,我不太确定在哪里寻找答案。
解决方案
推荐阅读
- list - 在序言中使用列表名称作为 nth0 参数
- facebook-messenger - 使用来自 webview 的数据发送 Messenger 聊天机器人消息
- soap - SSIS Web 服务任务无法连接到远程服务器
- shell - 使用 sh+ jq 循环 json
- c# - 在 Windows Server 2016 上运行的 Asp.Net Core Web API 身份验证失败
- javascript - 使用 javascript 或在控制台中显示数据 json 响应
- javascript - 在 WebForms 中浏览另一台服务器上的文件夹
- c++ - 将 C++ 中的直方图创建与期货并行化:如何将模板函数与未来一起使用?
- python - FastAPI Uvicorn 无需控制台即可运行
- php - 夜间评估时的日期比较