Asp.net mvc 剑道UI ASP.NETMVC-如何创建会话超时弹出窗口?

Asp.net mvc 剑道UI ASP.NETMVC-如何创建会话超时弹出窗口?,asp.net-mvc,kendo-ui,Asp.net Mvc,Kendo Ui,我必须创建一个会话超时弹出窗口,带有扩展会话的选项。我正在为我的项目使用剑道UI和ASP.NETMVC。有人能为我指出正确的方向或概述一下流程吗?当您的应用程序使用服务器端会话并大量使用ajax调用时,可能会出现一些复杂性。ajax调用不会重置服务器上的会话。当您知道已登录用户的客户端/服务器活动时,您必须找到一种定期重置它的方法 例如: 用户A登录并启动滑动过期会话,超时时间为15分钟 用户A加载一个包含grid/treeview/panelbar/etc的视图,该视图具有用于创建/添加/编辑

我必须创建一个会话超时弹出窗口,带有扩展会话的选项。我正在为我的项目使用剑道UI和ASP.NETMVC。有人能为我指出正确的方向或概述一下流程吗?

当您的应用程序使用服务器端会话并大量使用ajax调用时,可能会出现一些复杂性。ajax调用不会重置服务器上的会话。当您知道已登录用户的客户端/服务器活动时,您必须找到一种定期重置它的方法

例如:

  • 用户A登录并启动滑动过期会话,超时时间为15分钟

  • 用户A加载一个包含grid/treeview/panelbar/etc的视图,该视图具有用于创建/添加/编辑/删除的ajax绑定

  • 用户A在登录14.5分钟后保存一些数据,并且没有离开初始渲染视图

  • 用户A在15.2分钟后编辑另一条记录。此时,所有服务器端会话状态都已清除并释放,但是,ajax调用可能返回200。现在,一切都变得不稳定,你的应用程序可能很快就会崩溃

  • 我以以下方式处理了类似的情况

  • 创建一个js倒计时小部件,该小部件可以初始化并重置为秒,以表示到期。您希望此小部件支持在倒计时结束时调用回调。理想情况下,您希望此计时器有多个实例可用。您可以看到扩展的剑道小部件就是一个例子

  • 如果服务器上的会话状态是动态的,那么您将需要一个控制器端点,在该端点中您可以在客户端中获取该值。(可能是IndexController)

  • 加载初始页面时,使用服务器上的最新会话超时值(-2分钟)实例化倒计时计时器

  • 连接到调用ajax管道中。有一些全局ajax处理程序可以在主页上连接起来。我记不起名字了,但基本上,任何ajax完成/错误都可以在路由到发起调用的函数之前在这里进行全局处理。这将是一个很好的结合点,以便您可以刷新服务器会话,但是,您不希望在每次ajax完成期间刷新服务器会话。这是多个计时器实例非常有用的地方。在全局ajax处理程序中捕获每个ajax调用后,您可以检查自上次“ajax会话刷新”以来是否已经过了2分钟,如果没有,则需要再次调用以刷新会话的滑动过期时间。提供有关使用ajax调用刷新会话状态的多种方法的信息。此外,此时最好调用主客户端倒计时计时器上的重置(15*60)

  • 当会话倒计时计时器过期时显示弹出窗口。在步骤1中,您创建了一个计时器类,其中包含一个回调方法,在超时发生时调用该方法。我注意到会话超时-2分钟,但是-2只表示在用户注销并返回登录页面之前您希望对话框显示的时间量。在主倒计时计时器的超时回调中,创建一个剑道弹出窗口,其中可选的HH:MM:SS倒计时显示用户必须取消或继续的时间。您可以在对话框的上下文中调用第三个也是最后一个计时器,该计时器设置为-2分钟或希望显示对话框的任何时间。请注意,剩余时间加上对话框空闲时间必须小于服务器端会话时间

  • 最后,您需要响应对话框窗口中的三个操作

  • 用户按下取消按钮-重定向到将放弃会话并将用户发送到非安全页面的路由

  • 用户按下continue按钮-调用一个方法,该方法将重置所有倒计时计时器,并调用“ajax服务器会话刷新”函数重置会话的滑动过期时间

  • 对话框倒计时时间已过-与上面的步骤1相同,您可能希望该路径将用户带到“您已注销页面”


  • 你是在大量使用Ajax调用,还是主要依靠全后卫?