zoukankan      html  css  js  c++  java
  • 拦截器后台安全验证

    package com.huiminSys.web;

    import java.util.Date;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;

    import org.apache.struts2.ServletActionContext;

    import com.huiminSys.dao.LoginDao;
    import com.huiminSys.entity.Login;
    import com.opensymphony.xwork2.ActionInvocation;
    import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

    public class VerifyLoginInterceptor extends AbstractInterceptor {

        
               LoginDao loginDao=null;
               Login login=new Login();
        @Override
        public String intercept(ActionInvocation ai) throws Exception {
        
            // 获取当前正在运行的action的名字
            String strActionName = ai.getInvocationContext().getName();
             System.out.println(strActionName+"拦截器的动作------"+"开始执行登录Action的时间为:"+new Date());  
            if (strActionName.equals("Login_getOneLogin") || strActionName.equals("Log_doFilter")) {
                // 放行
                return ai.invoke();
            }

            // request对象
            HttpServletRequest request = ServletActionContext.getRequest();
            // session对象
            HttpSession session = request.getSession();

            // 验证结果
            boolean verifyResult = true;
            // 消息
            String message = null;

            // 验证登录标示
            Integer userId = null;
            if (verifyResult) {
                userId = (Integer) session.getAttribute("cunid");
                if (userId == null) {
                    verifyResult = false;
                    message = "请先登录。";
                }
            }

            // 验证帐号有效性
            
            if (verifyResult) {
                login=loginDao.getOneLogin(userId);
                if (login == null) {
                    verifyResult = false;
                    message = "无效帐号。";
                }
            }

            
        

            // 验证不通过
            if (!verifyResult) {

                // 保存消息
                request.setAttribute("message", message);

                // 判断请求类型
                String requestType = request.getHeader("X-Requested-With");
                if ("XMLHttpRequest".equalsIgnoreCase(requestType)) {
                    // Ajax请求
                    // 到登录页面
                    System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
                    return "dlym";
                    
                } else {
                    // 普通请求
                    // 到登录页面
                    System.out.println("cccccccccccccccccccccccccccccccccccc");
                    return "dlym";
                    
                }

            }

            // 保存当前登录用户对象
            request.setAttribute("currentUser", login);

            // 放行
            System.out.println("bbbbbbbbbbbbbbbbbbbbbbbbb");
            return ai.invoke();

        }
        public LoginDao getLoginDao() {
            return loginDao;
        }
        public void setLoginDao(LoginDao loginDao) {
            this.loginDao = loginDao;
        }
        public Login getLogin() {
            return login;
        }
        public void setLogin(Login login) {
            this.login = login;
        }
        

    }
    //配置文件其他做安全验证的列表都继承这个配置文件的包名

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
    <struts>
    <package name="all" extends="struts-default">
            <interceptors>
                <!-- 定义权限控制拦截器 -->
                <interceptor name="authority"
                    class="com.huiminSys.web.VerifyLoginInterceptor" />
                <!-- 定义一个包含权限控制的拦截器栈 -->
                <interceptor-stack name="mydefault">
                    <interceptor-ref name="defaultStack" />
                    <interceptor-ref name="authority" />
                </interceptor-stack>
            </interceptors>
            <!-- 定义默认拦截器 -->
            <default-interceptor-ref name="mydefault" />
            <!-- 定义全局处理结果 -->
            <global-results>
                <!-- 逻辑名为login的结果,映射到/login.jsp页面 -->
                <result name="dlym">/login.jsp</result>
            </global-results>
        </package></struts>

  • 相关阅读:
    关于windows CE Platform Builder中模拟器的限制
    送给每天都用电脑的人
    用eVC4开发SmartPhone、Pocket PC程序之 开发工具下载、安装、配置
    在手机上显示图片
    如何禁止回车的使用
    弹出窗口的方法
    Request.Form同Request.querystring的区别.txt
    找前几天
    手机上可移动的图片
    httphandler是做什么的?
  • 原文地址:https://www.cnblogs.com/zhiguci/p/7048973.html
Copyright © 2011-2022 走看看