iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >解决使用gateway后静态资源失效的问题
  • 375
分享到

解决使用gateway后静态资源失效的问题

2024-04-02 19:04:59 375人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

关于使用gateway后静态资源失效问题 配置文件方式对应服务配置文件目录提供参考 F12可以看到静态资源路径全部都是加载失败。这是因为我们没有对静态文件进行路由导致。 配置文件方

关于使用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的登录流程,总结的流程图如下:

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

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

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

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

验证猜想。

1. 将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}"/>

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

3. 解决方案:只需在action-state 节点中增加对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);

本地重新编译测试后发现可正常跳转回门户登录界面。将TGT的存活时间恢复默认值,发布到线上后,留意一段时间,发现没有出现改问题,至此解决问题。

总结:

sso login-webflow 登录流程较为复杂,出现问题时,应该根据登录流程图分析判断问题出现在哪些节点上,然后修改相关参数重现问题,之后修改相关逻辑验证以及解决问题。

--结束END--

本文标题: 解决使用gateway后静态资源失效的问题

本文链接: https://www.lsjlt.com/news/129789.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作