Cas5.3单点登录的服务端怎么接收客户端传递来的一个参数,以及客户端怎么传参到服务端?需要用这个参数来动态渲染服务端登录页面。
######这是客户端的配置:
我在服务端写了一个拦截器,只能拦截我写的controller路径,不能拦截到cas源码中的login路径。
不知道怎么解决了。最终目的是在登录页面渲染之前拿到客户端的参数。
######这是客户端的配置:
不知道怎么解决了。最终目的是在登录页面渲染之前拿到客户端的参数。
希望对你有帮助:
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>