import org.apache.struts2.ServletActionContext; import com.delicious.entity.Users; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; //检查用户是否登陆&&是不是管理员身份 //继承拦截器AbstractInterceptor抽象类或者实现Interceptor接口 public class SecurityInterceptor extends AbstractInterceptor { private static final long serialVersionUID = 1L; @Override public String intercept(ActionInvocation invocation) throws Exception { Users user = (Users) ServletActionContext.getContext().getSession().get("user"); if (user == null) { return "error"; }else if (!user.getIsAdmin()) { return "error"; }else { return invocation.invoke(); } } } //struts.xml文件 //其中红色部分是对拦截器的配置 //粗体部分为拦截器的使用
<package name="admin" namespace="/admin" extends="struts-default"> <interceptors> <interceptor name="security" class="com.delicious.interceptor.SecurityInterceptor"></interceptor> <interceptor-stack name="sshValueStack"> <interceptor-ref name="security" /> <interceptor-ref name="paramsPrepareParamsStack"> <param name="alwaysInvokePrepare">false</param> </interceptor-ref> </interceptor-stack> </interceptors> <default-interceptor-ref name="sshValueStack"></default-interceptor-ref> <global-results> <result name="error" type="redirectAction"> <param name="actionName">error</param> <param name="namespace">/</param> </result> </global-results> <action name="foods-*" class="adminFoodsAction" method="{1}"> <interceptor-ref name="fileUpload"> <param name="maximumSize ">10485760</param> <param name="allowedExtensions ">jpg,png,gif</param> </interceptor-ref> <interceptor-ref name="sshValueStack" /> <result name="list">/admin/foods_list.jsp</result> <result name="save" type="redirectAction">foods-list</result> <result name="edit">/admin/foods_input.jsp</result> <result name="delete" type="redirectAction">foods-list</result> <result name="input" type="redirectAction">foods-list</result> </action> <action name="messages-*" class="adminMessagesAction" method="{1}"> <result name="list">/admin/messages_list.jsp</result> <result name="*" type="redirectAction">messages-list</result> </action> </package>