我想访问keycloak freemarker模板中的一些信息。我正在考虑两种方法。设置url参数并在freemarker模板中读取它们或将此信息设置为cookie并在模板中访问它们。
我已尝试访问所述here或here所述的网址参数。但两者都不起作用。 Keycloak数据模型不为当前Url提供任何getter。
这些方法之一可能吗?我怎样才能实现目标
答案 0 :(得分:1)
我遇到了类似的问题,我必须在自定义keycloak登录主题中访问查询参数。 (使用Keycloak版本2.1.0.Final)
我的登录网站没有传递查询参数。 但我在里面发现了
org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider
您可以访问以下查询参数:
可以使用
UriInfo uriInfo = session.getContext().getUri();
MultivaluedMap<String, String> queryParameters = uriInfo.getQueryParameters();
您可以像这样阅读查询参数redirect_uri
String redirectUri = queryParameters.getFirst("redirect_uri")
要将某些数据传递到模板,您必须使用
attributes.put("keyToData", dataForTemplate);
在您按处理模板之前
freeMarker.processTemplate(attributes, Templates.getTemplate(page), theme);
然后在您的模板(例如template.ftl)中,您可以访问提供的数据,例如:
<#if keyToData!false == true>
...
</#if>
很遗憾,我无法访问/auth
内传递给我的keycloak FreeMarkerLoginFormsProvider
端点的自定义查询参数。
答案 1 :(得分:0)
要获取查询参数,我使用了Javascript,因为我在使用自由标记时做得太多了
<script type="text/javascript">
const urlParams = new URLSearchParams(window.location.search);
const myParam = urlParams.get('myParam');
</script>
希望它会帮助某人