この struts2 インターセプター クラスは、access
セッション キーをチェックし、ユーザーが実際のページの表示に進むか、エラー メッセージ ページを表示するかを決定します。
この種の値チェックへの最良のアプローチは何ですか?
public String intercept(ActionInvocation invoke) throws Exception {
Map<String,Object> session = invoke.getInvocationContext().getSession();
Set<String> access = (Set<String>) session.get("access");
String action = invoke.getAction().getClass().getSimpleName();
switch(action) {
case "ParametersHomeAction":
case "ErrorMapAction" :
case "FillerMusicAndLoginAction":
case "ScheduledAction":
case "SysConfigAction":
case "SysParamAction":
if(access.contains("PAR-FM") ||
access.contains("PAR-SCHA") ||
access.contains("PAR-EM") ||
access.contains("PAR-SYSCNF") ||
access.contains("PAR-CSAT")) {
return invoke.invoke();
} else return RESTRICTED_ERROR;
case "ProfilesHomeAction":
case "GroupAction":
case "UserAction":
if(access.contains("PFA-U") ||
access.contains("PFA-G")) {
return invoke.invoke();
} else return RESTRICTED_ERROR;
case "SystemHomeAction":
case "FunctionAction":
case "LockUnlockAction":
case "WfCategoryAction":
case "WfStatusAction":
if(access.contains("SYSA-WC") ||
access.contains("SYSA-WS") ||
access.contains("SYSA-WT") ||
access.contains("SYSA-WTU") ||
access.contains("SYSA-LUU") ||
access.contains("SYSA-BF")) {
return invoke.invoke();
} else return RESTRICTED_ERROR;
case "ReportsHomeAction":
if(access.contains("RP-BOAL") ||
access.contains("RP-PBAL") ||
access.contains("RP-PBF") ||
access.contains("RP-PBMT") ||
access.contains("RP-IVRMU") ||
access.contains("RP-ACAR") ||
access.contains("RP-AUR")) {
return invoke.invoke();
} else return RESTRICTED_ERROR;
// TRANSACTIONS TO FOLLOW
case "HomeAction": invoke.invoke();
default: return RESTRICTED_ERROR;
}
}