vue.js 根据承诺初始化Svelte应用程序

06odsfpq  于 2023-03-03  发布在  Vue.js
关注(0)|答案(1)|浏览(114)

我之前开发过几款使用Keycloak进行身份验证和授权的Vue应用,对于Vue应用,Keycloak提供了一个解决方案,只在用户通过身份验证时初始化应用,就可以保证未经身份验证的用户无法加载Vue应用。

keycloak.init({ onLoad: initOptions.onLoad }).then((auth) => {
  if (!auth) {
    window.location.reload();
  } else {
    Vue.$log.info("Authenticated");

    new Vue({
      el: '#app',
      render: h => h(App, { props: { keycloak: keycloak } })
    })
  }
...

现在,我正在做一个Svelte项目,我想应用同样的方法。有没有一种方法可以基于承诺初始化一个Svelte应用程序,类似于在Vue中使用Keycloak的方式?
我已经尝试过寻找解决方案,但我一直未能找到任何专门解决这个问题的苗条。
对我来说,最大的优点是您总是100%确定用户通过了身份验证,并且您总是可以访问JWT令牌,以便在必要时发送到后端。

but5z9lq

but5z9lq1#

单独使用Svelte时,可以使用客户端组件API

import App from "./App.svelte"

keycloak.init({ onLoad: initOptions.onLoad }).then((auth) => {
  if (!auth) {
    window.location.reload();
  } else {
    new App({
      target: document.getElementById('#app'),
      props: { keycloak: keycloak } })
    })
  }

在SvelteKit应用中,您可以使用src/routes/+ layout. js添加全局行为:
x一个一个一个一个x一个一个二个x
data.keycloak未定义时,验证失败。这允许有条件地呈现内容。
(the代码示例假定keycloak是客户端身份验证)

相关问题