这是一段登录进行拦截的拦截器代码
我把action写成了一个配置文件,通过比较actionname来实现拦截功能
package com.shop.web.intercept; import java.util.ArrayList; import java.util.List; import java.util.ResourceBundle; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; import com.shop.web.action.BaseAction; public class AuthenInterceptor extends AbstractInterceptor { private List<String> permissionUris = new ArrayList<String>(); @Override public void init() { ResourceBundle res = ResourceBundle.getBundle("permissionUris"); for(String key : res.keySet()){ permissionUris.add(res.getString(key)); } super.init(); } @Override public String intercept(ActionInvocation invocation) throws Exception { String actionName = invocation.getProxy().getActionName(); if(permissionUris.contains(actionName)){//如果actionName位于放行列表,则放行 return invocation.invoke(); } //不在放行列表则验证是否登录 if(ActionContext.getContext().getSession().get(BaseAction.LOGIN_USER)==null){ return Action.LOGIN;//返回登录结果 } return invocation.invoke();//返回Action执行后的结果 } }
时间: 2024-07-31 08:38:23