Java GWT历史记录的登录问题

Java GWT历史记录的登录问题,java,gwt,history,gwt-history,Java,Gwt,History,Gwt History,我有以下问题。这就是用户登录应用程序并注册历史记录时遇到的情况。 工作流程是: 1.有一个检查用户是否已经登录的程序,这意味着用户对象是否在会话中 如果没有,则加载登录表单并添加一个新令牌(History.newItem(“login”)) 如果是,则用户可以在应用程序中自由输入主窗体,并添加一个令牌(History.newItem(“main”))。 在用户成功输入pass和user之后,将添加一个新令牌(History.newItem(main))并输入应用程序主窗体 这就是问题所在,在显示

我有以下问题。这就是用户登录应用程序并注册历史记录时遇到的情况。 工作流程是: 1.有一个检查用户是否已经登录的程序,这意味着用户对象是否在会话中 如果没有,则加载登录表单并添加一个新令牌(History.newItem(“login”)) 如果是,则用户可以在应用程序中自由输入主窗体,并添加一个令牌(History.newItem(“main”))。 在用户成功输入pass和user之后,将添加一个新令牌(History.newItem(main))并输入应用程序主窗体

这就是问题所在,在显示主表单并且用户决定在浏览器中单击“后退”之后,从堆栈中获取“登录”令牌并加载登录表单。但假设用户决定单击“前进”浏览器按钮,然后获取“主”标记并显示主窗体。我不喜欢这种情况,我想做的是:在“后退”按钮后出现一个对话框,并用“是”和“否”按钮询问“离开申请”,但我无法确定何时进行常规登录或“后退/前进”登录以执行某些操作

任何建议或方法。。可能是我的设计错了


有没有办法区分后退或前进动作?

如果你想避免这一切,就不要在历史记录中输入“登录”

在这种情况下,您可能希望将登录面板实现为模式对话框。因此,当用户(或应用程序)请求登录时,将显示一个带有登录输入字段的模式对话框。完成登录后,只需关闭对话框并重新加载当前页面(以反映受登录影响的更改)


您可以使用“History.fireCurrentHistoryState()”强制重新加载当前页面。这将调用您的历史处理程序,但不会影响历史记录(没有向历史记录堆栈添加任何标记)。

如果您想避免所有这些,请不要将“登录”放在历史记录中

在这种情况下,您可能希望将登录面板实现为模式对话框。因此,当用户(或应用程序)请求登录时,将显示一个带有登录输入字段的模式对话框。完成登录后,只需关闭对话框并重新加载当前页面(以反映受登录影响的更改)


您可以使用“History.fireCurrentHistoryState()”强制重新加载当前页面。这将调用您的历史处理程序,但不会影响历史记录(历史记录堆栈中没有添加任何标记)。

Peter,我还有一个问题。用户单击“注销”后的行为应该是什么,让我们假设用户处于主窗体中,希望离开应用程序,因此单击“注销”将用户对象从会话中删除并加载登录窗体,但单击浏览器中的“返回”,历史记录保留“主”令牌。。。我如何处理这种情况?历史记录从成功登录后加载的主表单开始。对于需要验证用户身份的每个页面(即令牌),您都会显示对话框,完成后,您会继续页面。因此,在浏览决策树之后和显示页面内容之前,最好将身份验证检查放在历史处理程序中。另一个选项是直接转到主页并显示通知。这是UX的决定Peter我还有一个问题。用户单击“注销”后的行为应该是什么,让我们假设用户处于主窗体中,希望离开应用程序,因此单击“注销”将用户对象从会话中删除并加载登录窗体,但单击浏览器中的“返回”,历史记录保留“主”令牌。。。我如何处理这种情况?历史记录从成功登录后加载的主表单开始。对于需要验证用户身份的每个页面(即令牌),您都会显示对话框,完成后,您会继续页面。因此,在浏览决策树之后和显示页面内容之前,最好将身份验证检查放在历史处理程序中。另一个选项是直接转到主页并显示通知。这是一个用户体验的决定。