代码之家  ›  专栏  ›  技术社区  ›  iamaaarianme

如何以编程方式更改会话超时。网络核心

  •  0
  • iamaaarianme  · 技术社区  · 3 年前

    In startup.cs 我配置会话时没有超时

    services.AddSession(options =>
            {
                //options.IdleTimeout = TimeSpan.FromSeconds(10); no time out
                options.Cookie.HttpOnly = true;
                options.Cookie.IsEssential = true;
            });
    

    如何在控制器中以编程方式更改超时?是否有方法为一个特定的会话变量设置超时?如果没有,我如何实现一个表单会话,在一段时间后,表单将不会提交并重定向到主页?

    0 回复  |  直到 3 年前
        1
  •  1
  •   Dalibor Čarapić    3 年前

    不,您不能在控制器中更改会话超时。 如果您想确保表单在呈现后的某个时间无法提交,则可以执行以下操作:

    如果您正在使用会话:

    1. 当用户请求表单(视图)时,将当前日期和时间存储在会话中
    2. 当用户提交该表单时,从会话中读取当前日期和时间,并将其与当前日期和日期进行比较。如果时间过长(或会话已过期,在这种情况下,会话中的日期和时间不再存在),则只需重新显示原始视图(可能带有一些标签或用户花费太多时间的东西)
      注意:您需要确保会话超时时间大于您指定的表单开始变得太旧的时间。例如,如果用户在20分钟后无法提交,则会话超时应至少为20分钟。

    如果您不使用会话:

    1. 当用户请求表单(视图)时,将当前日期和时间存储在隐藏的 <input type=hidden> 返回视图中的字段
    2. 当用户提交该表单时,从输入中读取当前日期和时间,并将其与当前日期和日期进行比较。如果已经过去了太多时间,那么只需重新显示原始视图(可能带有一些标签或用户花费太多时间的东西)。
      注意:一般来说,这不是最安全的做法,因为用户可以通过浏览器工具更改隐藏字段中的日期/时间,但对你来说可能已经足够了。