- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了在我的应用程序用户使用 Keycloak 进行身份验证后发生的重定向问题。
我的应用程序使用 react-router hashRouter。当初始重定向发生时,我会得到一个如下所示的 redirect_fragment:
最佳答案
我想我想通了!
如果我使用 'noslash' hashRouter 而不是包含斜杠的默认值,重定向循环似乎会停止。
我的网址如下所示:localhost:3000/lol.html#client/side/route
而不是这个:localhost:3000/lol.html#/client/side/route
重定向现在似乎在一次重定向后适当终止,但现在我遇到了一个不同的问题,即我的路由的哈希部分没有被 react-router 尊重......
编辑:我想出了第二个问题
react-router 在 window.location
周围创建了一个包装器它用来告诉它当前位于哪个客户端“页面”。 我发现这个包装器与 window.location 不同步。
检查此控制台输出。这是在重定向解决后立即采取的(页面为空白):
历史路径名是 /state=aon03i-238hnsln-soih930-8hsdlkh9-982hnkui-89hkgyq-8ihbei78-893hiugsu
历史哈希是(空)
window.location 路径名是 /lol.html
window.location 哈希是 #users/1
state=blah-blah-blah
在 history.pathname 中是 keycloak 在身份验证后发回的重定向 url 的一部分。您会注意到 window.location 已更新为正确的路径/哈希,但该历史记录似乎落后于一个 URL。也许keycloak直接修改window.location来执行这个重定向?
我尝试使用 history.push(window.location.hash) 推送哈希片段并更新 react 路由器,但收到错误“堆栈中已存在此条目”。由于它显然不在位置堆栈的顶部,这让我相信 react-router 将 window.location 与其内部位置进行比较以找出它最终在哪里。那么我是如何解决这个问题的呢?
我用过 history.replace()
相反,它只是用新值替换堆栈顶部的条目,而不是将新条目插入堆栈。这也是有道理的,因为我们不希望在浏览器中“返回”的用户返回到 /state=blah-blah-blah
url <-- replace 从历史堆栈中删除此条目。
最后一部分:react-router history.location 和 window.location 一样,具有路径名和哈希组件。 HashRouter 使用 history.location.pathname
组件来跟踪浏览器中散列后的客户端路由。 window.location 中的 this 等价物存储在 window.location.hash 中,因此我们将使用它作为传递给 history.replace() 而不是 window.location.pathname 的值。这让我有点困惑,但当你考虑它时是有道理的。
react-router 历史记录还通过前置 /
跟踪其当前路由而不是前置 #
,因为它只是像对待任何普通 URL 一样对待它。在我打电话之前history.replace()
, 我需要带上我的 window.location.hash
, 用 /
替换前导哈希然后传递该值 history.replace()
const slashPath = window.location.hash.replace('#', '/');
history.replace(slashPath);
哇!
关于react-router - Keycloak redirect_fragment 与 react-router hashRouter 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44896414/
我已将 Keycloak 设置为 SAML 代理,身份验证由当局提供的外部 IdP 完成。使用此 IdP 登录的用户都被接受,我们需要从 Keycloak 获得一个 OAuth token 来访问我们
我在 master 有一个服务帐号领域。来自 admin-cli我要分配服务帐号master-realm-client管理员角色。我怎样才能做到这一点。 kcadm.sh add-roles -r m
在 Keycloak 中,是否可以对同一领域中的所有客户端仅进行一次登录?我已经以这种方式配置了服务器(从管理控制台): - 创建一个新领域(我们称之为 MyRealm); - 创建两个不同的客户端(
我们的团队正在开发一个集成到 Keycloak 中的项目。我们创建了一个自定义领域,例如 ProjectX ,并使其上的自定义主题能够应用于 Keycloak 的登录页面。 由于我们的主题应用于领域
Keycloak 是一个很棒的工具,但它缺乏适当的文档。 所以我们有 Realm.roles、Client.roles 和 User.roles 使用特定客户端访问应用程序时,这 3 者如何协同工作?
我们的团队正在开发一个集成到 Keycloak 中的项目。我们创建了一个自定义领域,例如 ProjectX ,并使其上的自定义主题能够应用于 Keycloak 的登录页面。 由于我们的主题应用于领域
有没有办法让所有用户在 keycloak 中创建自定义用户属性(如电话号码)? 最佳答案 您可以创建一个组并向其添加一个属性。 然后将该组设置为默认组。这样,所有用户都可以使用设置为组的属性 关于ke
我还尝试了 Web 来源和有效重定向 URI 的所有不同组合 我通过 keycloak 登录,它不断地在我的本地主机应用程序和这个 url 之间来回重定向我:http://localhost:4200
在 Keycloak's documentation ,据说为了部署提供程序,我可以 copy your provider jar to the Keycloak deploy/ directory,
目前,我使用此端点一次将用户添加到一个组: PUT /{realm}/users/{id}/groups/{groupId} 在我的用例中,批量执行影响是有益的,到目前为止我还没有找到这样做的记录方式
目前,我使用此端点一次将用户添加到一个组: PUT /{realm}/users/{id}/groups/{groupId} 在我的用例中,批量执行影响是有益的,到目前为止我还没有找到这样做的记录方式
我一直在尝试在 docker-compose 文件中使用 jboss/keycloak-mysql 来建立 Keycloak 服务器和 mysql 数据库。我在本地部署期间遇到一个问题,告诉我 WEB
我正在使用 Tomcat 适配器运行 Keycloak。但是,当我尝试获取 KeycloakPrincipal 时,它出错了; java.lang.ClassCastException: org.ke
我正在使用 keycloak 4.5.0 v 并创建了一个领域。我已经设置了登录以启用忘记用户名和验证电子邮件。在我输入的电子邮件选项卡中 host - smtp.gmail.com smtp po
我想让我的客户端应用程序从 keycloak 访问用户信息。因此,我在 keycloak 中创建了另一个领域 (myrealm1),并在该领域内创建了一个新客户端 (myclient1)。 key 斗
正如我在此链接中看到的 https://www.keycloak.org/docs/latest/authorization_services/#_overview ,客户端中应该有一个授权选项卡,如
这些 keycloak 端点有什么用? issuer: "http://localhost:8180/auth/realms/dev", authorization_endpoint: "http:/
我们需要将数百个用户从 csv 文件导入 Keycloak。我还没有找到任何现成的导入功能来做到这一点。 有没有人做过任何导入程序或至少有一些框架来构建? REST API 可能是唯一的方法 - 或者
我已经使用 LDAP 用户联盟配置了 Keycloak。当用户想要登录应用程序时,他会被重定向到 Keycloak 登录页面,输入 uid/pwd 并使用 LDAP 绑定(bind)进行身份验证。 这
有没有人在 Keycloak 中使用过 SCIM?如果是这样,你能指出我的文档吗?我用谷歌搜索过,它似乎不是受支持的配置。 最佳答案 不幸的是,Keycloak 尚不支持 SCIM。他们的 Jira
我是一名优秀的程序员,十分优秀!