博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
拦截器后台安全验证
阅读量:6786 次
发布时间:2019-06-26

本文共 2938 字,大约阅读时间需要 9 分钟。

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>

 

转载于:https://www.cnblogs.com/zhiguci/p/7048973.html

你可能感兴趣的文章
我的友情链接
查看>>
我的IT博客之路
查看>>
深入理解javascript原型和闭包(10)——this
查看>>
系统集成资质培训-论文写作-几个题目如何写?(updated)
查看>>
搭建自己的框架之1:Rxjava2+Retrofit2 实现Android Http请求
查看>>
排序算法-快速排序
查看>>
CSS3 Background 属性介绍
查看>>
frameset 的一些小应用
查看>>
eclipse自动换行
查看>>
Android PDF 阅读器源码
查看>>
我的友情链接
查看>>
silverlight渐隐效果
查看>>
使用Docker实现php代码在线测试执行工具-toolfk.com
查看>>
簡單範例 mergecap,wireshark 付屬程式
查看>>
网络文件传输学习
查看>>
Installation Oracle11gR2 RAC One Node ---创建数据库
查看>>
spring 通过EsClientFactory注入elasticsearch
查看>>
打造中国第一品牌安全网关
查看>>
Android定位功能(二)
查看>>
tomcat的安装及配置
查看>>