vue-axios-jwt

Vue plugin for axios-jwt
601 5
Install
npm install vue-axios-jwt
Latest Version:3.0.1
Vue:2
License:MIT
Last Updated:Jan 5, 2023
Links: GitHub  ·  npm
Maintainer: ziplokk1

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.

Related Packages

vue-auth-jwt

*An open-source Vue.js authentication package for JWT*

400
novadata-vue-auth

Authentication plugin for Vue 3 with JWT refresh token support

3,938
@zitadel/vue-auth

A comprehensive authentication integration for Vue applications with TypeScript...

2,151 27

Version History

Version Released Vue License
3.0.1 ^2.6.11 MIT
3.0.0 ^2.6.11 MIT
2.1.0 ^2.6.11 MIT
2.0.0 ^2.6.11 MIT
1.6.0 ^2.6.11 MIT
Pre-releases (1)
Version Released Vue License
1.0.0-alpha ^2.6.11 MIT