我在我的 GWT 应用程序中使用 GWTP 并具有以下架构:
LoginPresenter (Presenter)
DashboardPresenter (TabContainerPresenter)
TabbedPresenter1 (Presenter)
TabbedPresenter2 (Presenter)
TabbedPresenter3 (Presenter)
第一次启动我的应用程序时,在 DashboardPresenter 中调用 onBind 和 addTab 方法,当我导航到选项卡时,在该演示者上调用 onbind 方法。
如果我创建一个 PlaceRequest 并通过我的 PlaceManager 导航回 LoginPresenter(通过按注销按钮),我将返回到登录演示者。
问题是,如果我再次登录,则不会调用所有 onBind 方法,因为它们仍在内存中。onReset 和 onReveal 被正确调用,但我非常希望每个 Presenter 都被重置,并且每次登录时都会调用 onBind。
如果用户没有足够的权限查看这些选项卡,我决定登录事件哪些选项卡应该对用户可见,并在 DashboardPresenter 的 addTab 方法中限制选项卡。但截至目前,这些选项卡是在用户第一次登录时设置的,但不会在下次登录时设置。这意味着如果具有较少权限的用户在管理员用户之后登录,他可以看到与管理员相同的选项卡。不好!
我应该如何处理?我非常想在用户注销(导航到登录页面)时“重置”所有演示者或会话。是否需要“重置” Ginjector,使其不会返回与以前相同的绑定对象?
澄清一下:我们确实有服务器端安全性,它禁止无权访问敏感数据的用户。但是当用户登录时,gwt 应用程序会收到用户可以访问的功能列表。这用于自定义 UI 以适应用户的权限。(例如,根据用户权限自定义可见选项卡)。