在startup.cs
中,我配置会话不超时
services.AddSession(options =>
{
//options.IdleTimeout = TimeSpan.FromSeconds(10); no time out
options.Cookie.HttpOnly = true;
options.Cookie.IsEssential = true;
});
如何在控制器中以编程方式更改超时?是否有一种方法可以为一个特定的会话变量设置超时?如果不是,我怎么能实现一个表单会话后,一定时间的形式不采取提交和重定向到主页?
不能在控制器中修改会话超时时间。如果您想确保表单在呈现后的某个时间不能被提交,那么您可以执行以下操作:
如果你正在使用会话:
- 当用户请求表单(视图)时,将当前日期和时间存储在会话 当用户提交该表单时,从会话中读取当前日期和时间,并将其与当前日期和时间进行比较。如果时间过长(或者会话已经过期,在这种情况下,会话中的日期和时间不再存在),那么只需重新显示原始视图(可能是一些标签或用户花费了太多时间的东西)
注意:您要确保会话超时大于您指定的时间,当表单开始变得太旧。例如,如果用户在20分钟后不能提交,那么你的会话超时时间应该至少为20分钟。
如果您不使用会话:
- 当用户请求一个表单(视图),然后存储当前日期和时间在一个隐藏的
<input type=hidden>
字段在返回的视图 - 当用户提交表单时,然后从输入中读取当前日期和时间,并将其与当前日期和时间进行比较。如果时间过长,那么只需重新显示原始视图(可能是一些标签或用户花费了太多时间的东西)。
注意:一般来说,这不是最安全的事情,因为用户可以通过浏览器工具更改隐藏字段中的日期/时间,但它可能对您来说已经足够好了。