美文网首页
CAS和Shiro集成后 需要内网外网访问的集成配置

CAS和Shiro集成后 需要内网外网访问的集成配置

作者: BetterFuture | 来源:发表于2017-07-28 13:52 被阅读272次

    项目需要 CAS配置后只能配置一个地址 要么外网要么内网 很不方便,也不能满足项目需要 ,所以对项目做了相应的调整
    关于CAS与Shiro的集成这样就不说明了,一般在集成的过程中 都把地址在写固定在配置文件中,所以需要根据用户请求判定用户来自内网还是外网。

    1.找到shiro-web-1.2.2.jar包里的org.apache.shiro.web.filter.AccessControlFilter重写redirectToLogin方法

    public static Map<String, String> hostPort = new HashMap<String, String>();
        
        protected void redirectToLogin(ServletRequest servletRequest,
                ServletResponse response) throws IOException {
            String loginUrl = getLoginUrl();
            //重写URL
            final HttpServletRequest request = (HttpServletRequest) servletRequest;
            //获取配置信息
            Map<String, String> config = CustomConfigUtil.getCustomConfig(null, (HttpServletRequest) request);
            hostPort = config;
            loginUrl = config.get("casServerTicketUrl")+"/login?service="+config.get("client")+"/cas";
            WebUtils.issueRedirect(request, response, loginUrl);
    }
    

    2.CAS和Shiro集成后 需要自己重写一个realm 继承CasRealm 重写 doGetAuthenticationInfo方法
    在方法第一行增加重新赋值。

    setCasServerUrlPrefix(AccessControlFilter.hostPort.get("casServerTicket"));
    setCasService(AccessControlFilter.hostPort.get("client")+"/cas");
    

    总结:该方式能解决集成后内外网访问的问题 不过算不上好的方式。

    CustomConfigUtil 工具具体在http://www.jianshu.com/p/0a86a376e897中有介绍。

    相关文章

      网友评论

          本文标题:CAS和Shiro集成后 需要内网外网访问的集成配置

          本文链接:https://www.haomeiwen.com/subject/cooipttx.html