我正在使用GWT和MVP制作一个web应用程序。我正在尝试使用cookies,但我对历史记录有一个问题。如果用户有cookie并登录到web应用程序,应用程序会自动记录他,这很棒!现在,由于某种原因,他有能力点击退格键并返回历史!即使他登录的时候是空的!!
登录时的地址:由于某种原因保存在那里的...html?gwt.codesvr=127.0.0.1:9997#mainpage地址,然后单击backspace:...html?gwt.codesvr=127.0.0.1:9997弹出。
代码:
public void go(HasWidgets container) {
this.container = container;
if (History.getToken().isEmpty()) {
fetchCookie();
}
else {
History.fireCurrentHistoryState();
}
}
protected void fetchCookie()
{
String sessionID = Cookies.getCookie("username");
if (sessionID == null)
{
History.newItem("login");
}
else
{
.....
}现在假设我不关心这个问题(但我关心),并在按下退格键后尝试与web应用程序交互,我得到了一个异常:异常捕获:此小部件的父部件没有实现HasWidgets。
因此,我将发布实现组合并具有SplitLayoutPanel的主页面视图:
Panel.add(books);
vPanel.add(chapters);
vPanel.add(textButton);
splitPanel = new SplitLayoutPanel();
assetPicPanel = new VerticalPanel();
titleAssetPic = new Label();
assetPicPanel.add(titleAssetPic);
vPanel.add(assetPicPanel);
assetVidPanel = new VerticalPanel();
titleAssetVid = new Label();
assetVidPanel.add(titleAssetVid);
vPanel.add(assetVidPanel);
assetAudioPanel = new VerticalPanel();
titleAssetAudio = new Label();
assetAudioPanel.add(titleAssetAudio);
vPanel.add(assetAudioPanel);
assetTextPanel = new VerticalPanel();
titleAssetText = new Label();
assetTextPanel.add(titleAssetText);
vPanel.add(assetTextPanel);
splitPanel.addWest(vPanel, 300);
assetLocationPanel = new VerticalPanel();
splitPanel.add(page);
page.setWidth("50%");
RootLayoutPanel rp = RootLayoutPanel.get();
rp.add(splitPanel);
initWidget(rp);发布于 2014-10-22 03:34:45
您应该在入口点类的onModuleLoad()方法中设置cookie -它只在应用程序第一次加载时运行一次。绝对没有理由在每个导航操作中都检查这个cookie。
如果你担心你可能不得不在应用程序仍然打开的时候踢出你的用户,你应该通过从你的RPC调用抛出一个LoginException来做到这一点。无论如何,你必须在每次RPC调用时检查凭据-否则任何人都可以使用它们,即使没有打开你的应用程序。
https://stackoverflow.com/questions/26494645
复制相似问题