首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带cookie和历史记录的GWT MVP

带cookie和历史记录的GWT MVP
EN

Stack Overflow用户
提问于 2014-10-22 03:23:50
回答 1查看 47关注 0票数 0

我正在使用GWT和MVP制作一个web应用程序。我正在尝试使用cookies,但我对历史记录有一个问题。如果用户有cookie并登录到web应用程序,应用程序会自动记录他,这很棒!现在,由于某种原因,他有能力点击退格键并返回历史!即使他登录的时候是空的!!

登录时的地址:由于某种原因保存在那里的...html?gwt.codesvr=127.0.0.1:9997#mainpage地址,然后单击backspace:...html?gwt.codesvr=127.0.0.1:9997弹出。

代码:

代码语言:javascript
复制
   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的主页面视图:

代码语言:javascript
复制
  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);
EN

回答 1

Stack Overflow用户

发布于 2014-10-22 03:34:45

您应该在入口点类的onModuleLoad()方法中设置cookie -它只在应用程序第一次加载时运行一次。绝对没有理由在每个导航操作中都检查这个cookie。

如果你担心你可能不得不在应用程序仍然打开的时候踢出你的用户,你应该通过从你的RPC调用抛出一个LoginException来做到这一点。无论如何,你必须在每次RPC调用时检查凭据-否则任何人都可以使用它们,即使没有打开你的应用程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26494645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档