我曾经使用adonuxt,它很好用,但已经贬值了。所以我现在尝试将nuxt.js与adonis后端分开使用。我正在尝试建立登录系统。这两个项目在localhost中的两个独立端口上运行。CCD_ 1 nuxt项目和CCD_ 2 adonis项目。
如何在nuxtServerInit中获取登录用户信息?
我试着像这个
async nuxtServerInit({ commit }, { $axios }) {
console.log('I am running as nuxt server init')
try {
// get the initial data
let { data } = await axios.get('http://localhost:3333/myuser')
commit('loginUser', data)
} catch (e) {
console.log('nuxt server error ', e.response)
}
},
在我的adonis.js中,我正在尝试
async getUser({request, response, params, auth}){
try {
const user = await auth.getUser()
return user
} catch (error) {
return 'not logged in'
}
}
结果总是not logged in
。。。。
知道如何实施吗。。。。。
更新
我正在使用一个非常简单的登录系统
async user({request, response, params, auth}){
try {
const user = await auth.loginViaId(34)
return user
} catch (error) {
return error
}
}
我现在得到了一个非常有趣的结果。因此,如果我使用我的adonis项目登录,那么登录的用户信息将在nuxt项目中可用,但如果我使用nuxt axios登录,我将无法获得登录的用户
更新2
因此,会话登录是有效的,但当使用axios时,adonis无法找到用户或loggedin用户。
更新3
我们只能使用nuxtServerInit获得登录用户。。我们可以使用axios获取登录用户..:(
配置adonis
config/session.js
cookie: {
httpOnly: true,
path: '/',
sameSite: 'strict',
domain: Env.get('COOKIE_DOMAIN', null),
},
config/cors.js
/*
|--------------------------------------------------------------------------
| Credentials
|--------------------------------------------------------------------------
|
| Define Access-Control-Allow-Credentials header. It should always be a
| boolean.
|
*/
credentials: true, // Enable credentials cookies
Access-Control-Allow-Credentials响应头告诉浏览器,当包含请求的凭据模式(request.Credentials(时,是否将响应暴露给前端JavaScript代码。
有关访问控制允许凭据标头的更多信息:developer.mozilla.org
配置Nuxt
启用axios凭据(https://axios.nuxtjs.org/options.html#credentials):
nuxt.config.js
axios: {
credentials: true,
},