如何改变会话超时编程.net Core



startup.cs中,我配置会话不超时

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

如何在控制器中以编程方式更改超时?是否有一种方法可以为一个特定的会话变量设置超时?如果不是,我怎么能实现一个表单会话后,一定时间的形式不采取提交和重定向到主页?

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

如果你正在使用会话:

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

如果您不使用会话:

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

最新更新