GWT权限验证:父类BaseActivity继承com.google.gwt.activity.shared.AbstractActivity实现start方法,在start方法中调用一个约束子类的抽象方法showStart方法,从而实现每一次访问都需要进行权限验证,这一点类似filter的思想,代码片段如下:。
package com.cdl.client.activity; import com.google.gwt.activity.shared.AbstractActivity; import com.google.gwt.event.shared.EventBus; import com.google.gwt.json.client.JSONObject; import com.google.gwt.json.client.JSONParser; import com.google.gwt.json.client.JSONValue; import com.google.gwt.place.shared.PlaceController; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.google.gwt.user.client.ui.VerticalPanel; import com.cdl.client.GreetingServiceAsync; import com.cdl.client.place.LoginPlace; import com.cdl.client.util.ForWordString; import com.cdl.client.util.tool.ClientFactory; import com.cdl.client.util.tool.LayoutMenuiteComponent; import com.cdl.client.util.tool.UserTool; import com.cdl.client.view.compoment.MenuitemComponment; public abstract class BaseActivity extends AbstractActivity { protected ClientFactory factory; protected VerticalPanel contentVerPanel; private MenuitemComponment navMenu; private LayoutMenuiteComponent menuiteComponment = UserTool.getLayOutMenuite(); public BaseActivity(ClientFactory factory) { this.factory = factory; } /** 这个start方法主要用来做权限验证,然后再调用startShow方法 */ @Override public void start(final AcceptsOneWidget panel, final EventBus eventBus) { GreetingServiceAsync service = UserTool.getGreetingservice(); service.validateAdminLogin(new AsyncCallback<String>() { @Override public void onSuccess(String serverResult) { JSONValue serverVal = JSONParser.parseStrict(serverResult); JSONObject serverJson = serverVal.isObject(); boolean status = serverJson.get("status").isBoolean().booleanValue(); if (status) { contentVerPanel = new VerticalPanel(); navMenu = menuiteComponment.getMenuitemComponment(); int type = (int) serverJson.get("type").isNumber().doubleValue(); // 根据管理员类型的不同,在contentVerPanel添加是否包含administration的水平导航菜单 if (type == 1) { contentVerPanel.add(navMenu.createSuperAdminMenuHPanel()); } else { contentVerPanel.add(navMenu.createNormalAdminMenuHPanel()); } //子类实现的父类方法 startShow(panel, eventBus); } else { PlaceController placeGo = UserTool.getClientfactory().getPlaceController(); placeGo.goTo(new LoginPlace(ForWordString.LOGINPLACE)); } } @Override public void onFailure(Throwable caught) { PlaceController placeGo = UserTool.getClientfactory() .getPlaceController(); placeGo.goTo(new LoginPlace(ForWordString.LOGINPLACE)); } }); } /** 用户在start方法中验证权限后进入视图*/ public abstract void startShow(AcceptsOneWidget panel, EventBus eventBus); }
.