Piszę sobie aplikację w Vue (+ Vuex) z autoryzacją JWT. Wymyśliłem coś takiego:
//store.js
import Vuex from 'vuex';
import Vue from 'vue';
import key from './public.pem';
import jwt from 'jsonwebtoken';
Vue.use(Vuex);
const getters = {
user: () => JSON.parse(localStorage.getItem('user')) || false,
token: () => localStorage.getItem('token') || false
};
const actions = {
login(context, credentials) {
const afterFetch = (result) => {
const token = result.body.token;
const checkJWT = (error, user) => {
if(!error) {
localStorage.setItem('token', token);
localStorage.setItem('user', JSON.stringify(user));
}
};
jwt.verify(token, key, checkJWT);
};
Vue.http.post('login', credentials)
.then(afterFetch);
}
}
const store = new Vuex.Store({
getters,
actions
});
export default store;
Działa, ale nie jestem pewien czy to dobre rozwiązanie. Możecie coś doradzić?