在我的應用程式上,我已經安裝了 Vuex-oidc 包來使用我從后端獲得的端點來實作身份驗證,并且一切在我的機器上運行良好,但是我收到了修改 oidc 設定的請求,因為現在身份驗證是僅在語言環境中作業,而不是在開發服務器上作業,因此我被要求將這些設定從我的 config/oidc.js 檔案移動到 Nuxt“運行時”。
這是我的 config/oidc.js 檔案:
export const oidcSettings = {
authority: 'https://***/***.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=B2C_***_SIGNUPORSIGNIN',
clientId: '************',
token_endpoint: 'https://***/***.onmicrosoft.com/oauth2/v2.0/token?p=B2C_***_SIGNUPORSIGNIN',
redirectUri: 'http://localhost:3000/oidc-test/oidc-callback',
responseType: 'id_token ',
scope: 'https://***.onmicrosoft.com/***/Read openid'
}
然后我在使用我的 oidcSettings 的商店中有這個 oidc.js 檔案:
import { vuexOidcCreateStoreModule } from 'vuex-oidc'
import { oidcSettings } from '~/config/oidc'
const storeModule = vuexOidcCreateStoreModule(
oidcSettings,
{
namespaced: true,
dispatchEventsOnWindow: true,
publicRoutePaths: ['/', 'oidc-callback-error']
},
// Optional OIDC event listeners
{
userLoaded: user => console.log('OIDC user is loaded:', user),
userUnloaded: () => console.log('OIDC user is unloaded'),
accessTokenExpiring: () => console.log('Access token will expire'),
accessTokenExpired: () => console.log('Access token did expire'),
silentRenewError: () => console.log('OIDC user is unloaded'),
userSignedOut: () => console.log('OIDC user is signed out')
}
)
export const state = () => (storeModule.state)
export const getters = storeModule.getters
export const actions = storeModule.actions
export const mutations = storeModule.mutations
我不確定我應該使用什么或做什么來完成請求,我想引入一個 .env 并從中檢索 oidcSetting。這是個好主意嗎?
我還可以看到 Nuxt 有自己的運行時,可以在 nuxt.config.js 中宣告,例如“publigRuntimeConfig:{}”和“privateRuntimeConfig:{}”,但我找不到太多關于它的內容,只是基本的方法使用它們,但我不確定我的哪些設定應該是私有的,哪些應該是公開的,而且我也不知道如何在我的 store/oidc.js 檔案中呼叫它們。
一些建議?
uj5u.com熱心網友回復:
你有這些設定嗎
export const oidcSettings = {
authority: 'https://your_oidc_authority',
clientId: 'your_client_id',
redirectUri: 'http://localhost:1337/oidc-callback',
responseType: 'id_token token',
scope: 'openid profile'
}
我只能建議參觀 https://github.com/perarnborg/vuex-oidc/wiki
uj5u.com熱心網友回復:
我不確定這是獲得我想要的結果的最佳實踐,但它有效:
我所做的是使用 .env 檔案并將所有資訊保存在那里:
AUTHORITY = https://***/***.onmicrosoft.com/v2.0/.well-known/...
CLIENT_ID = ************
TOKEN_ENDPOINT = https://***/***.onmicrosoft.com/oauth2/v2.0/token?...
REDIRECT_URI = http://localhost:3000/oidc-test/oidc-callback
RESPONSE_TYPE = id_token
SCOPE = https://***.onmicrosoft.com/***/Read openid
然后在我的 nuxt.config.js 中,我require('dotenv').config()在檔案的最頂部添加了(@nuxtjs/dotenv 和 dotenv 包必須安裝,@nuxtjs/dotenv 必須在模塊和 nuxt.config 的 buildModules 中宣告.js)
現在你可以洗掉 config/oidc.js 檔案,你可以編輯 store/oidc.js: 而不是:
import { oidcSettings } from '~/config/oidc'
你可以寫:
const oidcSettings = {
authority: process.env.AUTHORITY,
clientId: process.env.CLIENT_ID,
token_endpoint: process.env.TOKEN_ENDPOINT,
redirectUri: process.env.REDIRECT_URI,
responseType: process.env.RESPONSE_TYPE,
scope: process.env.SCOPE
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/354802.html
