解决CAS内外网双IP访问的问题

针对CAS认证登录内外网双IP访问问题,通过解析项目需求,本文介绍了一种无需修改源码的解决方法。利用工具类和Shiro的整合,结合web.xml配置,实现动态重定向路径,确保内外网用户都能顺利登录。
摘要由CSDN通过智能技术生成

最近项目分给我一个需求解决CAS认证登陆的内外网双IP访问的问题,当使用通用的CAS统一认证服务时,由于WEB应用工程中web.xml配置的CAS地址是固定的,而不是一个动态的地址,当将WEB应用服务器例如TOMCAT端口映射外网后,在访问应用时会自动根据在web.xml文件中去配置对应的CAS地址,而此时的地址只能是内网使用,外网自然无法找到,则无法登陆,而由于项目的本身需要,必须要同时内外网都能访问,由此看了一周源码后,提供以下解决方案。

供工具类

public class HttpConnectionUtil {
   
//读取配置文件信息
    static Properties prop = new Properties();
    static{
        InputStream inStream = HttpConnectionUtil.class.getClassLoader().getResourceAsStream("application.properties");
        try {
            prop.load(inStream);
        } catch (IOException e) {
            e.printStackTrace();
        } 
    }

    /**
     * 
     * @param name
     * @return
     */
     //在配置文件中通过键取值
    public static String getByName(String name){
        return prop.getProperty(name);
    }
    //判断是内网环境还是外网环境
    public static boolean isInner(String clientIP) { 
        String reg = "(10|172|192|127)\\.([0-1][0-9]{0,2}|[2][0-5]{0,2}|[3-9][0-9]{0,1})\\.([0-1][0-9]{0,2}|[2][0-5]{0,2}|[3-9][0-9]{0,1})\\.([0-1][0-9]{0,2}|[2][0-5]{0,2}|[3-9][0-9]{0,1})";
        Pattern p = Pattern.compile(reg);
        Matcher matcher = p.matcher(clientIP);
        return matcher.find();
    }
}

源码解读:
本项目是cas和shiro的整合,cas认证登陆加入到shiro的过滤连里面:
在web.xml里面配置:

 <!-- 单点登录end -->
  <filter>
    <filter-name>shiroFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    <init-param>
      <param-name>targetFilterLifecycle</param-name>
      <param-value>true</param-value>
    </init-param>
    <!-- 设置spring容器filter的bean id,如果不设置则找与filter-name一致的bean-->
        <init-param>
            <param-name>targetBeanName</param-name>
            <param-value>shiroFilter</param-value>
        </init-param>
  </filter>
  <filter-mapping>
    <filter-name>shiroFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

然后过滤链在spring容器里面找id为shiroFilter的bean工厂

 <bean id="casFilter" class="org.apache.shiro.cas.CasFilter">  
        <!-- 配置验证错误时的失败页面  -->  
        <!--<property name="failureUrl" value="/error.jsp"/>   -->
        <!-- <property name="failureUrl" value="/casFailure.jsp" /> -->
      <!--   <property name="successUrl" value="/front3/index.html"/> -->
        <property name="failureUrl" value="${common_in.ip}/disrec" />
    </
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值