angular - 如何将 Angular 应用程序从keycloak登录重定向到特定路线

标签 angular angular-routing keycloak

我正在写 Angular 8 使用 的应用程序 key 斗篷 7.0.0 用于用户认证和授权。

当前工作流程指定:

  • 用户访问使用 Angular
  • 编写的网站
  • 用户被重定向到 Keycloak 服务器以获得特定领域登录
  • 成功登录后,用户将被重定向到多个(Angular)路由之一 - 取决于 Keycloak 中定义的用户 Angular 色(但是,重定向路由是在获取用户 Angular 色和重定向的 angular 组件内部确定的)。因此,登录后 Keycloak 重定向到空路由并且组件设置重定向路由。

  • 问题是,在成功登录后,如果用户打开另一个选项卡并输入指定路由的 URL,Keycloak 会找到当前 session 的 token 和 cookie,而不是对用户进行身份验证,但仍会将他重定向到空的路线。之后,根据用户 Angular 色重定向到路由的功能将重定向到用户 Angular 色的默认路由。

    我很感兴趣如何启用 Keycloak 在验证登录后重定向到它收到的初始路由,而不仅仅是空路由?

    我希望不需要代码,因为代码位于私有(private)存储库中。我正在使用 key 斗篷 Angular keycloak-js npm 模块。另外,我定义了 keycloak.servise.ts 有权访问用户的 token 并指定需要登录。

    附言我没有使用 身份验证实现 protected 路由,但 Keycloak 重定向到空路由,然后根据用户的 Angular 色,空 Angular 色中的组件重定向到默认路由并锁定那些不允许的组件。

    最佳答案

    在 KeycloakService 的 Login 方法中提供 KeycloakLoginOptions。
    例如

    keycloakLoginOptions: KeycloakLoginOptions = {
        redirectUri: 'http://localhost:4200/dashboard'
      }
    
    然后调用这个:
    this.keycloakService.login(this.keycloakLoginOptions);
    

    关于angular - 如何将 Angular 应用程序从keycloak登录重定向到特定路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57914517/

    相关文章:

    java - spring boot + angular 2部署

    angularjs - 在 AngularJS 路由中传递多个参数

    java - Wildfly 8 意外元素 '{urn:jboss:domain:web:1.1}subsystem'

    single-sign-on - 有没有办法在 keycloak SAML 断言中过滤/避免重复的属性名称?

    keycloak - kcadm 添加新的协议(protocol)映射器

    angular - 如何在 iis 上部署 angular-cli 应用程序

    Angular 守卫,文档中的陈述不明确

    angular - 断言 Angular 单元测试中存在父组件

    javascript - 使用 Material Sidenav 登录和注销路由

    javascript - 使用浏览器后,Angular $location 不会更新