Struts2 自定义拦截器 实现简单权限检查

来源:互联网 发布:今日股市数据 编辑:程序博客网 时间:2024/06/05 17:23

自定义struts2.xml中需要定义interceptors和全局结果集:

<interceptors> <interceptor name="login"class="com.itbbs.filter.LoginFilter"></interceptor><interceptor-stack name="loginStack"> <interceptor-refname="login"></interceptor-ref> <interceptor-refname="defaultStack"></interceptor-ref> </interceptor-stack></interceptors> <default-interceptor-refname="loginStack"></default-interceptor-ref> <global-results> <resultname="error">/error.jsp</result> <resultname="login">/login/login.jsp</result> </global-results><global-exception-mappings> <exception-mappingexception="java.lang.Exception" result="error" /></global-exception-mappings>

LoginFilter类:

package com.itbbs.filter;import java.util.Map;import com.itbbs.action.LoginAction;import com.itbbs.model.User;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class LoginFilter extends AbstractInterceptor {private static final long serialVersionUID = -7991337791474434519L;@Overridepublic String intercept(ActionInvocation invocation) throws Exception {Object action = invocation.getAction();if (action instanceof LoginAction) {return invocation.invoke();}Map<String, Object> session = invocation.getInvocationContext().getSession();User user = (User) session.get("user");if (null == user) {session.put("msg", "please login.");return Action.LOGIN;}return invocation.invoke();}}