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>

  • 相关阅读:
    如何把方法(函数)当参数传递
    致加西亚的信 摘录
    算法:C#数组去除重复元素算法研究
    [转帖]SQL SERVER 2005 安全设置
    [转].NET学习网站收集
    C#你真的懂了吗 啥叫引用2
    比IETEST更好用的浏览器兼容性测试软件[绿色]
    [转帖]使用asp.net访问Oracle的方法汇总
    影响力密码 信任你自己
    [转]自动刷新页面的实现方法总结
  • 原文地址:https://www.cnblogs.com/zhiguci/p/7048973.html
Copyright © 2011-2022 走看看