宛城第五圣 2023-01-05 17:39 采纳率: 0%
浏览 8

cas5.3服务端怎么接收客户端参数

Cas5.3单点登录的服务端怎么接收客户端传递来的一个参数,以及客户端怎么传参到服务端?需要用这个参数来动态渲染服务端登录页面。

######这是客户端的配置:

img

我在服务端写了一个拦截器,只能拦截我写的controller路径,不能拦截到cas源码中的login路径。

img

不知道怎么解决了。最终目的是在登录页面渲染之前拿到客户端的参数。

  • 写回答

1条回答 默认 最新

  • 龙星尘 2023-01-05 17:57
    关注

    希望对你有帮助:
    cas登录页中的title(如平台名称)是可配置的,比如从apollo读取,apollo配置样例:

    {
        "2201": "平台名称2201",
        "2202": "平台名称2202",
        "default": "默认平台名称"
    }
    

    http://192.168.200.111:8085/cas/login?area=2202&service=http://192.168.200.111:8089/center

    传入参数为area
    重载org.apereo.cas.web.flow.login.InitialFlowSetupAction

    public Event doExecute(final RequestContext context) {
            HttpServletRequest request = WebUtils.getHttpServletRequestFromExternalWebflowContext(context);
            if (request.getMethod().equalsIgnoreCase(HttpMethod.POST.name())) {
                WebUtils.putInitialHttpRequestPostParameters(context);
            }
    
            this.configureCookieGenerators(context);
            this.configureWebflowContext(context);
            this.configureWebflowContextForService(context);
            //增加了此方法
            this.configureBussinessSetting(context);
            return this.success();
        }
    
    private void configureBussinessSetting(final RequestContext context) {
            HttpServletRequest request = WebUtils.getHttpServletRequestFromExternalWebflowContext(context);
            String area = request.getParameter("area");
            if(StringUtils.isEmpty(area)) {
                area = "default";
            }
            this.applyAreaConfig(area,request);
        }
    
     private void applyAreaConfig(String area,HttpServletRequest request){
            Map<String,String> map = this.readAreaConfig();
            Map<String, String> itemAreaConfig = this.parseItemAreaConfig(map.get(PAGETITLE));
            final String pageTitle = this.readItemValue(itemAreaConfig, area);
            request.setAttribute("pageTitle",pageTitle);
            request.getSession().setAttribute("pageTitle",pageTitle);
    
        }
    

    前端登录页读取平台名称:

    <div class="header-title">
       <label th:text="${pageTitle}"></label>
    </div>
    
    评论

报告相同问题?

问题事件

  • 创建了问题 1月5日

悬赏问题

  • ¥20 python忆阻器数字识别
  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真