当前位置: 首页 > 知识库问答 >
问题:

KeyClope重定向到页面刷新时登录

景嘉实
2023-03-14

我在我的Angular 5应用程序中使用keycloak JavaScript适配器,虽然我的登录和重定向工作,但问题是每当我刷新我的ng应用程序时,它会再次要求keycloak登录,尽管我看到我的会话仍然在 /auth/realms/{image a领域名称}/帐户上处于活动状态。

正如我从KeyClope JS适配器文档中了解到的那样https://www.keycloak.org/docs/3.0/securing_apps/topics/oidc/javascript-adapter.html,当onLoad设置为init选项所需的登录时,如果用户登录到KeyClope,则会对客户端进行身份验证,否则会显示登录页面。但就我而言,似乎需要一秒钟的时间才能让我注销,因为它总是将我重定向到KeyClope的登录页面。

共有3个答案

孔飞舟
2023-03-14

你需要登录到你的keydape客户端,选择领域,导航到侧栏上的AUTHENTICATION选项卡,选择FLOW菜单选项卡,然后将cookie设置更改为alternative或required。

李成礼
2023-03-14

Tl;dr:在我的代码中,有几个原因导致init函数没有使用参数进行第二次调用。小心!

Fwiw,我有一个类似的问题,在我看来,我解决了这个问题(现在)。除了@ahmadalibaloch的答案(将已知令牌传递给init),我还遵循了以下简洁的指南:https://dev.to/matejbucek/secure-svelte-with-keycloak-42g3(不过对于svelte kit),其中checkParams函数检查重定向url以再次调用init函数(使用令牌)。

有两件事导致我的代码出现故障,您可以查找并尝试修复,这是由重定向url中的自定义搜索参数引起的,如下所示:

mypage.tld/foo?myparam=0#keycloak-redirect-params

这样一来,check Params函数就不能正常工作了。但同样,myparam=0被用作备用访问字符串(想想链接共享),所以我的代码在keycloak准备好之前就放弃了(第二次),即没有再次调用init函数,而是使用了search参数。我的建议:如果其他答案还不够,请尝试找出为什么init函数没有按照应有的方式再次调用

我知道这是非常具体的,但(对我来说)很难发现这一点,所以也许这会有所帮助。

子车煌
2023-03-14

您需要将以前登录时保存的令牌传递给KeyClope init构造函数。如果您使用的是授权流(标准),那么也要刷新令牌。这样地。

js prettyprint-override">// load previous tokens, saved after successful login of keycloak success callback
    const token = localStorage.getItem('kc_token');
    const refreshToken = localStorage.getItem('kc_refreshToken');
    // pass to keycloak init
    keycloak.init({ onLoad: 'login-required', token, refreshToken }).then(
    success=>{
      localStorage.setItem('kc_token', keycloak.token);
      localStorage.setItem('kc_refreshToken', keycloak.refreshToken);
      //load your app from here
  });
 类似资料:
  • 记录器文件中的日志- org.springframework.Security.Access.event.loggerlistener-安全授权失败,原因是:org.springframework.Security.Access.accessdeniedexception:访问被拒绝;通过身份验证的主体:org.springframework.security.authentication.ano

  • 在我的应用程序中,用户登录后我有一个主页和一些其他页面。问题是,当我在其中一个页面中刷新页面时,它会再次将我发送到主页。这是我的路线: 应用程序组件具有路由器出口 那么,我期待什么呢?首先,如果我是我的“列表”页面()并且我刷新了这个页面,它应该留在那里。在那一页。但现在它将我重定向到本地主机:4200/home。当然,当我单击一个列表项时,它应该将我发送到本地主机:4200/detail/ite

  • 我正在使用laravel passport进行NUXT身份验证。我遵循这一文件: https://auth.nuxtjs.org/providers/laravel-passport.html#usage 我可以在我的nuxt-app上成功登录。它在登录后重定向到仪表板,其中仪表板具有。问题是。当我刷新仪表板时,它会重定向回登录页面。在js控制台上,$auth.is身份验证返回true,但在SSR

  • 我在Laravel框架中的HomeController.php中有一段代码,但是我无法访问它重定向到登录页面的索引/主页。我犯了什么大错?

  • 我现在一直在努力使用我的登录页面来让组件呈现Loggedin组件。我的前端是Reactjs,后端是NodeJS。我对nodejs、expression和react都是新手。 在loginform组件上,我使用fetch进行了一次post,它将用户名和密码传递给后端的相应endpoint。没问题。在后端,它读取我存储用户(不使用任何数据库)的jsonfile来查找匹配项,如果用户名和密码都匹配,则它

  • 我正在使用keydepot身份验证对angular应用程序进行身份验证,到目前为止,我已成功将登录重定向到keydeport服务器。但当重定向而不是登录页面时,我会收到一个500错误页面,其中包含消息