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 asp.net core中会话超时后自动重定向到其他页面_Asp.net Core_Asp.net Core 2.0 - Fatal编程技术网

Asp.net core asp.net core中会话超时后自动重定向到其他页面

Asp.net core asp.net core中会话超时后自动重定向到其他页面,asp.net-core,asp.net-core-2.0,Asp.net Core,Asp.net Core 2.0,会话过期时如何自动重定向到其他页面 下面是我的startup.cs代码 public void ConfigureServices(IServiceCollection services) { services.AddMvc(); services.AddAuthentication(options => { options.DefaultAuthenticateScheme = CookieAuthenticationDe

会话过期时如何自动重定向到其他页面

下面是我的startup.cs代码

public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();

        services.AddAuthentication(options => {
            options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
        })
             }).AddCookie(options =>
        {
            options.LoginPath = "/auth/signin";
            options.SlidingExpiration = true;
            options.ExpireTimeSpan = TimeSpan.FromSeconds(30);

        });

    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }



        app.UseStaticFiles();

        app.UseAuthentication();

        app.UseMvc();
    }
我可以重定向到登录页面,如果我点击一个按钮或一个Actionlink。 但是我想在会话到期时自动重定向到另一个页面(登录页面除外)。 有人能帮我吗?

试试这个:

  options.Cookie.Name = "auth_cookie";
            options.Cookie.SameSite = SameSiteMode.None;
            options.LoginPath = new Microsoft.AspNetCore.Http.PathString("/Account/Login");
            options.AccessDeniedPath = "/Account/Login";
            options.ReturnUrlParameter = "/Account/Login";
            options.AccessDeniedPath = "/Account/AccessDenied";
            options.LogoutPath = "/Account/Logout";
            options.ExpireTimeSpan = TimeSpan.FromMinutes(1);//set it less for testing purpose
            // options.Events.OnRedirectToLogin
将代码从代码Events.OnRedirectToLogin或OnRedirectToLogin中删除此返回错误代码。 我认为我们可以显示错误401或302等,或者将用户重定向到登录页面。
希望这有帮助

这不是会话的工作方式。首先,会话使用滑动过期,因此只要用户保持活动状态,它们就永远不会过期。如果用户的非活动状态持续了足够长的时间,直到会话过期(在会话的整个生命周期内不再发出任何请求),那么用户仍然会将会话cookie发送回。当该特定会话因过期而无法恢复时,与之前根本不存在会话的情况相同。只需创建一个新会话并向用户发送一个新cookie。您找到解决方案了吗?