SSRのクライアントサイドでレンダリングされる前にstoreに保存するにはミドルウェアを使います。
そのときの参考に残します。
ここでは例にjwtをstoreに保存することをやってみます。普通はcookieとかに保存しますが一例として。
nuxt.config.js
module.exports = {
//省略
router: {
middleware: 'hoge' //ミドルウェアのファイル名
},
//省略
}
middleware/hoge.js
export default async ({ store }) => {
if (store.state.auth.token === null) {
await store.dispatch('auth/setToken')
}
}
store/fuga.js
import axios from 'axios'
export const state = () => ({
token: null
})
export const mutations = {
login (state, token) {
state.token = token
}
}
export const actions = {
async setToken ({ commit }) {
await axios.post('http://api.your-site.com/v1/auth', {
identifier: 'hogefuga@hoga.com',
password: 'password'
}).then(res =>
commit('login', res.data.jwt)
)
}
}