Я думаю, что вам следует попытаться создать службу в своем реактиве приложения.
Например, httpService. js:
import axios from "axios";
function setJwt(jwt) {
axios.defaults.headers.common["x-auth-token"] = jwt;
}
export default {
get: axios.get,
post: axios.post,
put: axios.put,
delete: axios.delete,
setJwt
};
После создания httpService. js вы также может создавать аутентификацию. js, которая обрабатывает ваши токены, включая вход в систему, регистрацию и сохранение их в localalstorage и готовность к использованию, когда вы захотите.
Например, авторизация. js:
import jwtDecode from "jwt-decode";
import http from "./httpService";
import {apiUrl} from "../config.json";
const apiEndpoint = apiUrl + "/auth";
const tokenKey = "token";
http.setJwt (getJwt());
export async login function(email, password) {
const {data: jwt} = await http.post(apiEndpoint, {email, password});
localStorage.setItem(tokenKey, jwt);
}
export function loginWithJwt(jwt) {
localStorage.setItem(tokenKey, jwt);
}
export function logout() {
localStorage.removeItem(tokenKey);
}
function getCurrentUser() {
try {
const jwt = localStorage.getItem(tokenKey);
return jwtDecode(jwt);
} catch(ex) {
return null;
}
}
export function getJwt() {
return localStorage.getItem(tokenKey);
}
export default {
login,
logout
getCurrentUser,
loginWithJwt,
getJwt
};
Поэтому, если вы хотите защитить свой маршрутизатор, вам нужно только вызвать auth.getCurrentUser ().
Надеюсь, приведенный выше код поможет вам.