This repository was archived by the owner on Jul 24, 2025. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 372
How to set token expiration as refreshData interval #682
Copy link
Copy link
Open
Description
First of all, thank you for this awesome auth package!
I did the following implementation for a based Laravel Passport API:
plugins/auth.js
import { createAuth } from '@websanova/vue-auth/src/v3'
import axios from '@/plugins/axios'
import router from '@/router'
import passportDriver from '@/plugins/auth/drivers/passport'
import driverHttpAxios from '@websanova/vue-auth/src/drivers/http/axios.1.x'
import driverRouterVueRouter from '@websanova/vue-auth/src/drivers/router/vue-router.2.x'
export default (app) => {
app.use(
createAuth({
plugins: {
http: axios,
router: router,
},
drivers: {
http: driverHttpAxios,
auth: passportDriver,
router: driverRouterVueRouter,
},
options: {
loginData: {
url: '/v1/auth/login',
method: 'POST',
redirect: '/owners',
fetchUser: true,
staySignedIn: true,
},
logoutData: {
url: '/v1/auth/logout',
method: 'DELETE',
redirect: '/',
makeRequest: true,
},
fetchData: { url: '/v1/user/profile', method: 'GET', enabled: true },
refreshData: {
url: '/v1/auth/refresh',
method: 'POST',
enabled: true,
interval: 60,
},
rolesKey: 'roles',
tokenDefaultKey: 'access_token',
refreshTokenKey: 'refresh_token',
tokenExpiresKey: 'expires_in',
},
})
)
}
login response
{
"token_type": "Bearer",
"expires_in": 2592000,
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI.........",
"refresh_token": "def502001ba0735c080bd9943fff4763........."
}
plugins/auth/drivers/passport.js
export default {
request: function (req, token) {
// If refresh, add refresh_token to request data
if (req.url === this.options.refreshData.url) {
req.data = { refresh_token: this.token(this.options.refreshTokenKey) }
}
this.drivers.http.setHeaders.call(this, req, {
Authorization: 'Bearer ' + token,
})
},
response: function (res) {
const resData = res.data || {}
// Store refresh_token if present
this.token(
this.options.refreshTokenKey,
resData[this.options.refreshTokenKey]
)
// Return access_token (auto stored)
return resData[this.options.tokenDefaultKey]
},
}
The question is, how can I set refreshData interval value depending on login response expires_in value?
With this approach auth package will refresh token automatically based on token "true" expiration time.
Thank you in advance!
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels