簡體   English   中英

頁面刷新后如何防止gwt應用進入登錄頁面?

[英]How to prevent gwt app to go to login page after page refresh?

我有一個帶有登錄頁面和主頁的gwt應用程序。 登錄后,應用程序轉到主頁。 我想要的是如果我刷新頁面以保留在主頁中而不要登錄頁面。 我讀過很多東西,嘗試過History Mechanish,但沒有結果。 這是我的代碼:

@Override
    public void onSuccess(Login result) {

        if (result.getLoginCount() == 1) {

            final VerticalPanel userPanel = new VerticalPanel();

            Anchor logout = new Anchor("logout");
            logout.addStyleName("user");

            logout.addClickHandler(new ClickHandler() {

                @Override
                public void onClick(ClickEvent event) {
                    loginPanel.setVisible(true);
                    tablePanel.setVisible(false);
                    addPanel.setVisible(false);
                    userPanel.setVisible(false);

                }
            });

            Label user = new Label("Hi " + usernameBox.getText());

            userPanel.add(user);
            user.addStyleName("user");
            userPanel.add(logout);
            userPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
            userPanel.setVisible(true);

            usernameBox.setText("");
            passwordBox.setText("");

            RootPanel.get("user").add(userPanel);

            loginPanel.setVisible(false);
            tablePanel.setVisible(true);
            addPanel.setVisible(true);

            History.newItem("main");

            History.addValueChangeHandler(new ValueChangeHandler<String>() {

                @Override
                public void onValueChange(ValueChangeEvent<String> event) {

                    if(History.getToken().equals("main")){

                        loginPanel.setVisible(false);
                        tablePanel.setVisible(true);
                        addPanel.setVisible(true);

                    }

                }
            });

        }

我也嘗試過:

String historyToken = event.getValue();

                    if(historyToken.substring(0 , 4).equals("main")){

                        loginPanel.setVisible(false);
                        tablePanel.setVisible(true);
                        addPanel.setVisible(true);
                    } else {
                        loginPanel.setVisible(true);
                        tablePanel.setVisible(false);
                        addPanel.setVisible(false);
                    }

這是使用History.addValueChangeHandler處理頁面刷新的正確方法嗎? 我將不勝感激任何幫助。

GWT應用程序是單頁應用程序。 這意味着,如果您重新加載頁面,則應用程序的狀態將丟失。 您可以做的是使用本地存儲來存儲相同的狀態數據,但這不是身份驗證數據的好主意。

我建議您以對后端進行身份驗證的方式來重構代碼,當用戶刷新頁面時,您的GWT客戶端將從后端數據中恢復其狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM