nuxt 시리즈 [2] 사용자 로그 인하 여 사용자 정보 와 token 을 저장 하고 권한 인증 을 실현 합 니 다.
2765 단어 nuxtJavascript
해결 방법: js - cookie 를 이용 하여 token 을 저장 하면 token 에서 머리 에서 얻 을 수 있 고 vuex 를 사용 하여 token 과 사용자 정 보 를 store 에 저장 할 수 있 습 니 다.
1. 로그 인 작업
const Cookie = process.client ? require('js-cookie') : undefined
// token
getToken() {
let vm = this
// axios
User.userLogin.request(this.form, (res) => {
let token = res.data['token']
vm.$store.commit('setAuth', token)
Cookie.set('auth', token)
vm.getUserInfo()
}, (error) => {
vm.$notify.error({title: ' !'})
})
},
//
getUserInfo() {
let vm = this
User.userInfo.request((res) => {
let data = res.data
if (data) {
vm.$store.commit('setUser', data)
vm.$router.push('/reading-list')
}
})
},
2. 미들웨어 authenticated. js
store 안의 데 이 터 를 새로 고침 한 후 비 웠 기 때문에 미들웨어 를 추가 하여 store 데 이 터 를 다시 설정 합 니 다.머리 에 사용자 정보 가 없 으 면 쿠키 가 효력 을 잃 으 면 다시 로그 인 합 니 다.
import getCookie from '@/config/get-cookie'
export default function ({store, route, redirect, req}) {
// If the user is not authenticated
const {auth} = getCookie(req)
if (auth) {
store.commit('setAuth', auth)
return store.dispatch('getUserInfo')
}
const routePath = route.path
const extraPath = ['/']
if ((!store.state.auth) && extraPath.indexOf(routePath) === -1) {
//
return redirect('/')
}
}
nuxt. config. js 에서 미들웨어 사용 하기
router: {
middleware: ['authenticated'],
}
3.store/index.js
nuxtServerInit
nuxtServerInit({commit, state}, {req}) {
//console.log('nuxt init')
// console.log(req.headers.cookie)
let auth = null
if (req.headers.cookie) {
const parsed = cookieparser.parse(req.headers.cookie)
try {
auth = JSON.parse(parsed.auth)
} catch (err) {
// No valid cookie found
}
commit('setAuth', auth)
}
},
4. axios 차단기 token 을 header 에 추가
let token = Cookie.get('auth')
// console.log(token)
if (token) {
config.headers = {
'Authorization': `Token ${token}`
}
}
demo 참조:https://github.com/liuzhumin/nuxt-demo.git
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【비공식】Notion을 CMS로 해 기사 일람을 취득해 보았다 【하지만 편리】최근에는 업무 위탁으로 디자인 회사에서 배우면서 일전을 벌 수 있는 생활을 하고 있습니다. 또 이 후 axios를 넣을지 묻는다고 생각하므로 잊지 않고 넣어 봅시다. 이번에는 create-nuxt-app라는 페이지를...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.