如何使用会话身份验证nuxt前端和adonis后端



我曾经使用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,
},

最新更新