Firebase 인증 상태를 vuex로 저장
개시하다
이번에 Firebase를 사용하여 간단한 앱을 만들었는데 구글 인증 후의 상태를 유지하는 것이 상당히 까다롭기 때문에 비망록으로 보존하였다.
문제점
Google 인증을 통해 로그인한 후 다시 불러오면 인증 상태가 사라집니다.
해결 프로그램
1. firebaseの認証状態の設定をする
2. store.jsにて認証状態を取得するmutation及びactionの作成、stateで状態管理
3. 認証状態が必要なページでactionから取得する
Firebase 구성
일단 Firebase.js에서 인증 상태의 지속성을 설정합니다.
firebase
import firebase from 'firebase'
if (!firebase.apps.length) {
firebase.initializeApp(
{
apiKey: "xxxxxxxxxxxxxxxxxxxxxxxxxxx",
authDomain: "xxxxxxxxxxxxxx.firebaseapp.com",
databaseURL: "https://xxxxxxxxxxxxxx.firebaseio.com",
projectId: "xxxxxxxxxxxxxxx",
storageBucket: "xxxxxxxxxxxxxxxxxx.appspot.com",
messagingSenderId: "xxxxxxxxxxxxxxx",
appId: "xxxxxxxxxxxxxxxxxxxxxxxxxx"
}
)
// 今回は現在のセッションまたはタブでのみ状態が保持される設定
firebase.auth().setPersistence(firebase.auth.Auth.Persistence.SESSION).then(() => {
console.log('Initialized!') // 確認用のメッセージ
})
}
export default firebase
action,mutation의 제작 +state 관리 인증 상태
그런 다음 Store에서 인증 상태의 action, mutation을 만듭니다.
store
export const actions = {
login({ commit }) {
const provider = new firebase.auth.GoogleAuthProvider();
firebase.auth().signInWithPopup(provider).then((result) => {
const user = result.user
commit('loginStateChange', true)
console.log('Login was successful')
commit('setUserUid', user.uid)
commit('setUserName', user.displayName)
this.$router.push('/dashboard')
}).catch((error) => {
const errorCode = error.code
console.log('error : ' + errorCode)
});
},
// 認証状態の取得をするaction
onAuth({ commit }) {
firebase.auth().onAuthStateChanged(user => {
user = user ? user : {}
commit('setUserUid', user.uid)
commit('loginStatusChange', user.uid ? true : false)
})
},
...
}
storeexport const mutations = {
loginStatusChange(state, status) { // 認証状態を双方向に変化
state.loggedIn = status
},
setUserUid(state, userUid) { // user_uidの取得
state.userUid = userUid
},
}
storeexport const state = () => ({
userUid: '',
loggedIn: false,
})
인증 상태 가져오기
그리고 인증 상태를 얻으려는 페이지에서cread를 사용하여 미리 가져옵니다.
index
<script>
export default {
...
created() {
this.$store.dispatch('onAuth')
},
}
</script>
이렇게 하면 재부팅을 하더라도 인증 상태는 계속해야 한다.더 좋은 방법이 있다면 꼭 메시지를 남겨주세요.참고 자료
인증 상태의 지속성
Vue vuex에서 Firebase 로그인 유지
Reference
이 문제에 관하여(Firebase 인증 상태를 vuex로 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/grinch1252/articles/99c3010e235609텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)