[英]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.