vue-axios-jwt
v3.0.1
Published
Vue plugin for axios-jwt
Downloads
14
Maintainers
Readme
Vue Wrapper For Axios-Jwt
Usage
import Vue from 'vue';
import VueAxiosJwt from 'vue-axios-jwt';
Vue.use(VueAxiosJwt);
const axiosJwtHandler = new AxiosJwtHandler({refresh_endpoint: '/api/v1/auth/token/refresh/', instance});
const app = new Vue({
// ... other junk
axiosJwtHandler
}).$mount('#app');
Configuration
Required parameters.
refresh_endpoint {string}
The endpoint to obtain a new access token using the
refresh token. (e.x. /api/v1/auth/token/refresh/
)
login_endpoint {string} [optional]
The endpoint to log the user in via some kind of
credentials. (e.x. /api/v1/auth/login
)
instance {axios} [optional]
The axios instance you want to use for making calls to the API.
If one is not specified, then it will create an instance
via axios.create()
.
This is useful if you want to specify a different base URL or some other axios configurations.
transformer {function => object} [optional]
A callable object which takes an AxiosResponse and
returns an object such as {accessToken: 'string', refreshToken: 'string'}
.
The default implementation is:
typescript
import {AxiosResponse} from 'axios';
import {IAuthTokens} from 'axios-jwt';
const defaultTransformer = (response: AxiosResponse): IAuthTokens => ({
accessToken: response.data.access_token,
refreshToken: response.data.refresh_token
});
Or if you prefer ES6...
javascript
const defaultTransformer = (response) => ({
accessToken: response.data.access_token,
refreshToken: response.data.refresh_token
})
Making Requests
<template>
<div>
<span>Hello {{ user }}</span>
</div>
</template>
<script>
export default {
name: 'Example',
data() {
return {
user: ''
}
},
mounted() {
this.$axios.get('/api/v1/user/')
.then(response => { this.user = response.data.user });
}
}
</script>
Using it in other places
/**
* src/apiClient.js
*/
import AxiosJwtHandler from 'vue-axios-jwt';
const handler = new AxiosJwtHandler({refresh_endpoint: '/api/v1/auth/refresh/'});
export default handler.instance;
/**
* src/main.js
*/
import apiClient from './apiClient';
apiClient.post('/api/v1/something/', {data: {ayy: 'lmao'}});
The above structure is nice when you have your vuex store in different modules and need to make XHR requests within the actions.