文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

使用gateway后静态资源失效怎么办

2023-06-20 13:59

关注

这篇文章主要介绍了使用gateway后静态资源失效怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

关于使用gateway后静态资源失效问题

配置文件方式对应服务配置文件目录提供参考

使用gateway后静态资源失效怎么办

F12可以看到静态资源路径全部都是加载失败。这是因为我们没有对静态文件进行路由导致。

配置文件方式

贴出主要配置:/static    public GatewayParameterCheck(final ServicesManager servicesManager) {        this.servicesManager = servicesManager;    }     @Override    protected Event doExecute(final RequestContext context) throws Exception {            final Service service = WebUtils.getService(context);        final HttpServletRequest request = WebUtils.getHttpServletRequest(context);                String gateWayV = request.getParameter("gateway");        if (StringUtils.hasText(gateWayV) && service != null) {                if ("true".equals(gateWayV)) {                logger.info("gateway参数校验,校验信息:gateway={}, 请求服务信息:{}", gateWayV, service.toString());        return  yes();        }        }         return no();    }}

更新到生产环境后,经用户测试发现此方案无效。此方案无效后,只能再次去回归login-webflow的登录流程,总结的流程图如下:

使用gateway后静态资源失效怎么办

上图只是涉及到登录部分简单截图,不涉及到TGT以及ST。

由上图可以发现,在“ticketGrantingTicketCheck”节点之后,如果TGT不存在,则会去检查gateway参数,如果gateway存在,则会去到节点“gatewayServicesManagementCheck”,如果不存在,则回到节点“serviceAuthorizationCheck”,到该节点一般也就会到sso的登录界面了。

之前在节点“gatewayRequestCheck”后增加了gateway参数再次检查的节点“gatewayParameterCheck”发现无效果。

因此可以排除走这条线的可能性,剩下的只有TGT存在无效到sso登录界面这条线了。在这个action-state之中只是对tgt相关的cookie进行清除,并没有对gateway参数进行检查,因此有可能是问题的所在。

验证猜想。

将TGT的存活时间暂时设置为60秒(默认为2小时),方便测试。

修改配置文件:ticketExpirationPolicies.xml

<!-- TicketGrantingTicketExpirationPolicy: Default as of 3.5 -->    <!-- Provides both idle and hard timeouts, for instance 2 hour sliding window with an 8 hour max lifetime     "-->    <bean id="grantingTicketExpirationPolicy" class="org.jasig.cas.ticket.support.TicketGrantingTicketExpirationPolicy"          p:maxTimeToLiveInSeconds="${tgt.maxTimeToLiveInSeconds:28800}"          p:timeToKillInSeconds="${tgt.timeToKillInSeconds:60}"/>

重新发布sso程序,从门户认证成功后,等待60秒过后,再次刷新门户系统,发现果然到sso登录界面。重复实现多次发现都时一样。由此可以得出,由于门户使用的TGT失效,并没有检查gateway参数因此跳转到sso的登录界面。

解决方案:只需在action-state 节点中增加对gateway参数的检查逻辑,根据检查的结果到不同的节点即可。新的流程图如下:

使用gateway后静态资源失效怎么办

在上图中增加节点 “terminateSession”的 条件为“gateway”的transition,当请求中存在gateway参数时,让流程到gatewayRequestCheck节点。

代码:

final HttpServletResponse response = WebUtils.getHttpServletResponse(context);        this.ticketGrantingTicketCookieGenerator.removeCookie(response);        this.warnCookieGenerator.removeCookie(response);                        final String hasGateWayParameter = WebUtils.getHttpServletRequest(context).getParameter("gateway");        if (!VTools.StringIsNullOrSpace(hasGateWayParameter) && "true".equals(hasGateWayParameter)) {                 return new Event(this, "gateway");        }                return this.eventFactorySupport.success(this);

感谢你能够认真阅读完这篇文章,希望小编分享的“使用gateway后静态资源失效怎么办”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯