非情剑 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日

悬赏问题

  • ¥15 在centos7安装conda
  • ¥15 c#调用yolo3 dll文件获取的数据对不上
  • ¥20 WPF 如何实现多语言,label 和cs(live Charts)中是否都能翻译
  • ¥15 STM32F103上电短路问题
  • ¥15 关于#单片机#的问题:以ATMEGA128或相近型号单片机为控制器设计直流电机调速的闭环控制系统(相关搜索:设计报告|软件设计|流程图)
  • ¥15 打开软件提示错误:failed to get wglChoosePixelFormatARB
  • ¥15 (标签-python|关键词-char)
  • ¥15 python+selenium,在新增时弹出了一个输入框
  • ¥15 苹果验机结果的api接口哪里有??单次调用1毛钱及以下。
  • ¥20 学生成绩管理系统设计