struts2 权限拦截器 拦截没有登陆的请求

假设有这样的登陆:

ActionContext.getContext().getSession().put("UserMsg", userMsg);

则可以这样判断是否登陆:

import com.ahgw.common.sessionBean.UserMsg;

import com.opensymphony.xwork2.Action;

import com.opensymphony.xwork2.ActionContext;

import com.opensymphony.xwork2.ActionInvocation;

import com.opensymphony.xwork2.interceptor.AbstractInterceptor;



/**

 * 负责后台权限访问(必须登陆才可以进入后台)

 * User: HYY

 * Date: 13-5-27

 * Time: 下午8:27

 * To change this template use File | Settings | File Templates.

 */

public class AdminInterceptor extends AbstractInterceptor {



    @Override

    public String intercept(ActionInvocation actionInvocation) throws Exception {

        ActionContext context = actionInvocation.getInvocationContext();

        UserMsg userMsg = (UserMsg) context.getSession().get("UserMsg");

        if (userMsg == null) {

            return Action.LOGIN;

        }

        return actionInvocation.invoke();

    }

}

其相应的strut配置如下:

<struts>

    <package name="admin-newsManage" extends="struts-default,json-default" namespace="/newsManage">

        <interceptors>

            <interceptor name="privilege" class="com.ahgw.admin.interceptor.AdminInterceptor"/>

            <interceptor-stack name="privilegeStack">

                <interceptor-ref name="defaultStack"/>

                <interceptor-ref name="privilege"/>

            </interceptor-stack>

        </interceptors>



        <default-interceptor-ref name="privilegeStack"/>



        <global-results>

            <result name="login" type="redirect">/admin.do</result>

        </global-results>



    </package>

</struts>

这样,该package下的所有action中的execute方法进行之前,都会经过interceptor拦截器的判断,即进行权限判断,如果已经登陆,则会转入action中,否则返回登陆视图。

 

其中包含struts2拦截器堆栈的知识,这里不进行展开了。

你可能感兴趣的:(struts2)