zoukankan      html  css  js  c++  java
  • struts2 自定义拦截,防止非法操作

    <package name="defaults" extends="struts-default">
        
            <interceptors>
                <interceptor name="login"
                    class="com.zqgame.interceptor.CheckLoginInterceptor" />
                <interceptor-stack name="myinterceptor">
                    <interceptor-ref name="login">
                        <param name="excludeMethods">validateLogin</param>
                    </interceptor-ref>
                    <interceptor-ref name="defaultStack" /> 
                </interceptor-stack>
            </interceptors>
            <!-- 设置所有Action自动调用的拦截器堆栈 -->
            <default-interceptor-ref name="myinterceptor"></default-interceptor-ref>
            <global-results>
                <result name="error">/err/exception.jsp</result>
                <result name="message">/err/message.jsp</result>
            </global-results>
            
            <global-exception-mappings>
                <exception-mapping exception="java.lang.NullPointerException" result="error" />
                <exception-mapping exception="java.lang.Exception" result="error" />
            </global-exception-mappings>
        </package>

    action配置里面继承defaults:

    <package name="login" namespace="/login" extends="defaults">
            <action name="login_*" class="loginAction" method="{1}">
            
            </action>
        </package>

    拦截器类实现:

    public class CheckLoginInterceptor extends MethodFilterInterceptor {
        
        private Logger log = LoggerFactory.getLogger(CheckLoginInterceptor.class);
    
        private static final long serialVersionUID = 1L;
    
        @Override
        protected String doIntercept(ActionInvocation actionInvocation) throws Exception {
            // 确认Session中是否存在LOGIN
            Map<String,Object> session = actionInvocation.getInvocationContext().getSession();
            String login = (String) session.get(SysKey.Login_Key);
            if (login != null && login.length() > 0) {
                // login不为null,登录session有效。
                return actionInvocation.invoke();
            } else {
                // 否则非法操作,返回LOGIN
                log.debug("no login, forward login page!");
                return PageCode.Login;
            }
        }
     }
  • 相关阅读:
    hdu5608 function
    Codeforces Round #535 (Div. 3) 解题报告
    HDU4746 Mophues
    HDU5663 Hillan and the girl
    AtCoder Beginner Contest 117 解题报告
    GDOI2018D2T1 谈笑风生
    BZOJ4018: 小Q的幻想之乡
    牛客寒假算法基础集训营6 解题报告
    win32拖拽编程
    项目开发中的贝塞尔曲线
  • 原文地址:https://www.cnblogs.com/quyongjin/p/3848159.html
Copyright © 2011-2022 走看看