Laravel Nuxt auth refresh
参考 https://dev.auth.nuxtjs.org/providers/laravel-jwt.html
配置后发现不可用 然后打开
https://auth.nuxtjs.org/ 却找不到上述配置了 于是只能做了两个
auth strategy
export default {
modules: [
// Doc: https://axios.nuxtjs.org/usage
'@nuxtjs/axios',
'@nuxtjs/auth',
],
/*
** Axios module configuration
** See https://axios.nuxtjs.org/options
*/
axios: {
// baseURL: "http://siteapi.test/api",
//开发模式下开启debug
debug: process.env.NODE_ENV == "production" ? false : true,
//设置不同环境的请求地址
// baseURL: process.env.NODE_ENV == "production" ? process.env.API_URL || "http://siteapi.test/api" : process.env.API_URL || "http://siteapi.test/api",
//WARNING: baseURL and proxy cannot be used at the same time,
// so when the proxy option is in use, you need to define prefix instead of baseURL.
proxy: true,//This is highly recommended to prevent CORS and production/deployment problems.
prefix: '/api/',
},
proxy: {
"/api/": {
target: process.env.NODE_ENV == "production" ? process.env.API_URL || "http://siteapi.test/api" : process.env.API_URL || "http://siteapi.test/api",
changeOrigin: true,
pathRewrite: {'^/api/': '/'}
//In the proxy module, /api/ will be added to all requests to the API end point. If you need to remove it use the pathRewrite option:
},
"/auth/": {
target: 'http://siteapi.test/api/auth',
pathRewrite: {'^/auth': '/'}
}
},
auth: {
//Options
strategies: {
local: {
scheme: 'refresh',
endpoints: {
login: {url: '/auth/login', method: 'post', propertyName: 'meta.token'},
user: {url: '/auth/user', method: 'post', propertyName: 'data'},
refresh: {url: '/auth/refresh', method: 'post', propertyName: 'meta.token'},
logout: {url: '/auth/logout', method: 'post'},
// login: {url: '/auth/login', method: 'post'},
// user: {url: '/auth/user', method: 'post'},
// refresh: {url: '/auth/refresh', method: 'post'},
// logout: {url: '/auth/logout', method: 'post'},
},
token: {
// property: 'access_token',
maxAge: 60 * 60, // same as ttl but in seconds
type: 'Bearer'
},
refreshToken: {
// property: 'refresh_token',
// data: 'refresh_token',
maxAge: 20160 * 60 // same as refresh_ttl but in seconds
},
user: {
// property: 'user',
autoFetch: true
},
},
localWithoutRemeberme: {
_scheme: 'local',
endpoints: {
login: {url: '/auth/login', method: 'post', propertyName: 'meta.token'},
user: {url: '/auth/user', method: 'post', propertyName: 'data'},
// refresh: {url: '/auth/refresh', method: 'post', propertyName: 'meta.token'},
logout: {url: '/auth/logout', method: 'post'},
// login: {url: '/auth/login', method: 'post'},
// user: {url: '/auth/user', method: 'post'},
// refresh: {url: '/auth/refresh', method: 'post'},
// logout: {url: '/auth/logout', method: 'post'},
},
token: {
// property: 'access_token',
maxAge: 60 * 60, // same as ttl but in seconds
type: 'Bearer'
},
// refreshToken: {
// // property: 'refresh_token',
// // data: 'refresh_token',
// maxAge: 20160 * 60 // same as refresh_ttl but in seconds
// },
user: {
// property: 'user',
autoFetch: true
},
autoLogout: true //Default: false, If the token has expired, it will prevent the token from being refreshed on load the page and force logout the user.
},
// 'laravelJWT': { //本方法来源 https://dev.auth.nuxtjs.org/providers/laravel-jwt.html 但是这个页面貌似不支持我的nuxt auth版本【dev】
// //其实应该看 https://auth.nuxtjs.org/ 是没有这个配置说明的
// provider: 'laravel/jwt',
// url: 'http://siteapi.test/api',
// endpoints: {
// login: {url: '/auth/login', method: 'post', propertyName: 'meta.token'},
// user: {url: '/auth/user', method: 'post', propertyName: 'data'},
// refresh: {url: '/auth/refresh', method: 'post', propertyName: 'meta.token'},
// logout: {url: '/auth/logout', method: 'post'},
// },
// token: {
// maxAge: 60 * 60 // same as ttl but in seconds
// },
// refreshToken: {
// maxAge: 20160 * 60 // same as refresh_ttl but in seconds
// },
// }
},
redirect: //source https://auth.nuxtjs.org/api/options.html#redirect
{
login://User will be redirected to this path if login is required.
// false
'/login'
,
logout: //User will be redirected to this path if after logout, current route is protected.
// false
'/'
,
callback: //User will be redirected to this path by the identity provider after login. 第三方
// (Should match configured Allowed Callback URLs (or similar setting) in your app/client with the identity provider)
// false
'/api/auth/third_auth_callback'
,
home: //User will be redirect to this path after login. (rewriteRedirects will rewrite this path)
// false
'/dashboard'
,
}
}
}
前端登录页面js部分:
this.$auth.loginWith((remember) ? 'local' : 'localWithoutRemeberme', {
data: {
email: email,
password: password,
remember,
}
})
根据remember是否选中来判断使用哪个登录策略,
如官方文档所述:
https://dev.auth.nuxtjs.org/providers/laravel-jwt.html#token-lifetimes 【这是不是个假官方啊】
Laravel JWT does not provide a refresh token; the token and refreshToken expires as define in the Laravel JWT's config.
Our provider will manage the refresh automatically based on the token life.
The default token lifetime is 1 hour and the refreshToken is 2 weeks based on the config. Make sure that your Laravel JWT config matches our Auth Nuxt Laravel JWT config as shown below:
Laravel JWT不会提供refresh token 而是根据config/jwt.php文件中设置的时间来判断过期的。所以前端需要配置
token: {
maxAge: 60 * 60 // same as ttl but in seconds
},
refreshToken: {
maxAge: 20160 * 60 // same as refresh_ttl but in seconds
}这个过期时间是和后端的配置对应的。
两个strategy的 session:



浙公网安备 33010602011771号