Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 如何在其他选项卡打开时关闭选项卡后删除cookie_Asp.net Core_Active Directory_Ldap - Fatal编程技术网

Asp.net core 如何在其他选项卡打开时关闭选项卡后删除cookie

Asp.net core 如何在其他选项卡打开时关闭选项卡后删除cookie,asp.net-core,active-directory,ldap,Asp.net Core,Active Directory,Ldap,我正在实施一个asp.net核心3.1项目。我的问题是,当用户关闭项目选项卡,同时其他选项卡打开时,cookie将被删除。现在在运行项目之后,当其他选项卡打开时,在我关闭显示我的程序的选项卡并再次运行我的项目之后,我不需要登录,cookie也不会被删除。但在这种情况下,我也想登录。如果有人告诉我解决问题需要使用的表达方式,我将不胜感激。为了实现该项目,我使用Startup.cs中的以下表达式通过ldap对用户进行身份验证: public void ConfigureServices(IServi

我正在实施一个asp.net核心3.1项目。我的问题是,当用户关闭项目选项卡,同时其他选项卡打开时,cookie将被删除。现在在运行项目之后,当其他选项卡打开时,在我关闭显示我的程序的选项卡并再次运行我的项目之后,我不需要登录,cookie也不会被删除。但在这种情况下,我也想登录。如果有人告诉我解决问题需要使用的表达方式,我将不胜感激。为了实现该项目,我使用Startup.cs中的以下表达式通过ldap对用户进行身份验证:

public void ConfigureServices(IServiceCollection services)
{

services.AddControllersWithViews();

services.AddDbContext<CSDContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("CSDContext")));


services.AddScoped<IAuthenticationService, LdapAuthenticationService>();
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(options =>
{
// Cookie settings

//set the cookie name here
options.Cookie.Name = "UserLoginCookie"; // Name of cookie
options.Cookie.HttpOnly = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(15);

options.LoginPath = "/Account/Login";
options.AccessDeniedPath = "/Account/UserAccessDenied";
options.AccessDeniedPath = "/Account/AccessDenied";
options.SlidingExpiration = true;
});

services.AddSession();
services.AddSingleton<MySharedDataViewComponent>();
services.AddHttpContextAccessor();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseSession();

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");

});
}

上面的表达式可以工作,如果我关闭所有选项卡和浏览器,它会删除cookie。

你可以在JavaScript中检测到选项卡关闭。但我不建议你做这样的操作。为什么你要在关闭选项卡时删除cookie。我想如果一个选项卡关闭,cookie删除,当其他选项卡将请求发送到服务器端时,这可能会导致任何其他问题。MinaMRM,您知道了吗?我有同样的要求,我知道如果打开了任何选项卡,并且关闭了运行应用程序的选项卡,那么cookie不会被删除,只要在关闭浏览器时设置程序,cookie就会被删除。此外,还可以设置过期时间,即当您在特定时间内不使用该程序时,它会删除cookie。您可以在JavaScript中检测到选项卡关闭。但我不建议您执行此类操作。为什么要在关闭选项卡时删除cookie。我想如果一个选项卡关闭,cookie删除,当其他选项卡将请求发送到服务器端时,这可能会导致任何其他问题。MinaMRM,您知道了吗?我有同样的要求,我知道如果打开了任何选项卡,并且关闭了运行应用程序的选项卡,那么cookie不会被删除,只要在关闭浏览器时设置程序,cookie就会被删除。此外,还可以设置过期时间,即当您在特定时间内不使用该程序时,它将删除cookie。
var authProperties = new AuthenticationProperties
{

IsPersistent = false

};