मैंने एक नया कोणीय एप्लिकेशन बनाया है और मैं Auth0 के साथ लॉगिन पर काम कर रहा हूं, लेकिन मुझे यह त्रुटि मिलने से oidc-client के साथ एक समस्या का सामना करना पड़ा:

main.ts:12 TypeError: clientSettings.userStore is not a function
at new OidcService (ng-oidc-client.js:599)

मेरे auth.module में मेरे पास यह कॉन्फ़िगरेशन है:

NgOidcClientModule.forRoot({
      // prettier-ignore
      oidc_config: {
        authority: environment.sts.authority,
        client_id: environment.sts.clientId,
        redirect_uri: `${environment.appRoot}oidc-login-redirect-callback.html`,
        scope: 'openid profile',
        response_type: 'id_token token',
        post_logout_redirect_uri: `${environment.appRoot}/oidc-logout-redirect-callback.html`,
        silent_redirect_uri: `${environment.appRoot}/oidc-silent-renew-redirect-callback.html`,
        accessTokenExpiringNotificationTime: 10,
        automaticSilentRenew: true,
        metadata: {
          authorization_endpoint: `${environment.sts.authority}authorize audience=${environment.sts.audience}`,
          userinfo_endpoint: `${environment.sts.authority}userinfo`,
          issuer: environment.sts.authority,
          jwks_uri: `${environment.sts.authority}.well-known/jwks.json`,
          // tslint:disable-next-line: max-line-length
          end_session_endpoint: `${environment.sts.authority}v2/logout?returnTo=${environment.appRootEncoded + 'oidc-logout-redirect-callback.html'}&client_id=${environment.sts.clientId}`
        },
        userStore: new WebStorageStateStore({ store: window.localStorage })
      }
    })

और यहाँ मेरी पर्यावरण फ़ाइल है:

export const environment = {
  production: false,
  appRoot: 'http://localhost:4200',
  appRootEncoded: 'http://localhost:4200',
  apiUrl: 'http://localhost:4201',
  sts: {
    authority: 'https://dev-serj.eu.auth0.com/',
    clientId: 'R7fxgHNkPEj2VX1H7q4Fp0j2XnSqaudJ',
    audience: 'dev-serj-api'
  }
};

मुझे यकीन है कि userStore में कोई समस्या है, लेकिन मुझे इसे ठीक करने के लिए कोई समाधान नहीं मिल रहा है।

मेरा ओआईडीसी संस्करण:

"ng-oidc-client": "^1.0.7",
"oidc-client": "^1.10.1",
0
Sergiu Molnar 28 पद 2019, 02:11

1 उत्तर

सबसे बढ़िया उत्तर

ऐसा लगता है कि ng-oidc-client और oidc-client के बीच संस्करण विरोध है।

ng-oidc-client आपसे एक ऐसा फ़ंक्शन प्रदान करने की अपेक्षा करता है जो WebStorageStateStore लौटाता है। हालांकि, Config का आकार सीधे oidc-client से आता है, जहां यह WebStorageStateStore होना चाहिए न कि कोई फंक्शन।

कुछ समय पहले तक, userStore फ़ील्ड को oidc-client में any के रूप में घोषित किया गया था, जिसने इस ट्रिक की अनुमति दी। 1.10 में oidc-client का पुनर्गठन किया गया था, और नया टाइपिंग userStore: WebStorageStateStore है।

एक फ़ंक्शन प्रदान करने के लिए एक त्वरित सुधार होगा - जैसे एनजी-ओआईडीसी-क्लाइंट अपेक्षा करता है। और संकलन त्रुटियों को दबाने के लिए एक प्रकार का दावा जोड़ें।

userStore: (() => new WebStorageStateStore({ store: window.localStorage })) as any

और शायद ng-oidc-client के लिए बग रिपोर्ट दर्ज करें। :)

2
amakhrov 27 पद 2019, 23:54