【问题标题】:Add session timeout from controller in ASP.NET Core MVC在 ASP.NET Core MVC 中从控制器添加会话超时
【发布时间】:2019-11-19 16:46:00
【问题描述】:

如何在 ASP.NET Core MVC 中从控制器添加会话超时?

我正在开发一个 ASP.NET Core MVC Web 应用程序,我需要从控制器的操作方法中添加会话超时。

【问题讨论】:

    标签: c# asp.net-core .net-core asp.net-core-mvc session-state


    【解决方案1】:

    在 ConfigureServices 中配置会话

     services.AddSession(options =>
            {
                options.IdleTimeout = TimeSpan.FromSeconds(120);
                options.Cookie.HttpOnly = true;
                options.Cookie.IsEssential = true;
            });
    

    【讨论】:

    • 您好,先生。我也知道这一点,但我只是告诉你如何从控制器更改会话超时,甚至不包括启动类
    • @RahulRathaur 找到任何解决方案了吗?我也需要你需要的这个解决方案。
    【解决方案2】:

    您可以尝试自定义注册会话的middleware filter attribute,并使用以下内容装饰控制器或操作:

    public class SessionPipeline
    {
        public void Configure(IApplicationBuilder applicationBuilder)
        {
            var options = new SessionOptions
            {
                IdleTimeout = TimeSpan.FromSeconds(5),
            };
            applicationBuilder.UseSession(options);
        }
    }
    
    [MiddlewareFilter(typeof(SessionPipeline))]
    public class HomeController : Controller
    {
    }
    

    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 = context => false;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });
    
            services.AddSession();
    
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        }
    
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            //...more middlewares
    
            app.UseSession();
    
            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
        }
    

    【讨论】:

      猜你喜欢
      • 2019-12-03
      • 1970-01-01
      • 2020-07-23
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 2015-12-19
      • 1970-01-01
      • 2020-04-10
      相关资源
      最近更新 更多