使用 Express 会话反应本机身份验证?

Posted

技术标签:

【中文标题】使用 Express 会话反应本机身份验证?【英文标题】:React Native authentication using Express sessions? 【发布时间】:2022-01-18 23:57:56 【问题描述】:

我目前有一个使用 React 前端 + Express 会话后端进行身份验证和授权的 Web 应用程序。我想知道是否可以使用相同或相似的工作流程来验证移动用户。这就是我在 Web 应用程序中对用户进行身份验证的方式:

req.session.user =  id: user.rows[0].id ; // Set session cookie with user's ID
res.status(200).json(status: "success", message: "Login successful");

这很简单。如果传递的登录凭据正确 - 我使用来自数据库的用户 ID 创建一个会话,并将成功返回给前端。

当使用 React Native 作为前端时,我可以做类似的事情吗?我是移动开发的新手,但移动客户端是否有类似于 Web 浏览器的 cookie 存储?非常感谢您的任何意见:)

【问题讨论】:

【参考方案1】:

是的,您可以使用 cookie 进行身份验证,我建议使用 fetch function 进行 http 请求。您需要通过access-control-allow-credentials 标头在服务器和客户端之间共享cookie。

例子:

var params = 
            method: "POST",
            headers: 
                Accept: 'application/json',
                'Content-Type': 'application/json',
                'access-control-allow-credentials': 'true'
               
        
        params.body = JSON.stringify(body)
        const response = await fetch(url, params)
        const json = await response.json()

【讨论】:

【参考方案2】:

使用这个库react-native-async-storage,从 react native 调用与从 react 和持久化数据完全相同的函数。

【讨论】:

你不需要任何库来存储cookie认证数据。 你不需要任何库来调用后端方法,但标准方法是使用 axios

以上是关于使用 Express 会话反应本机身份验证?的主要内容,如果未能解决你的问题,请参考以下文章

禁用 cookie 时如何验证用户身份?

Apollo express 没有快速护照会话

Django Rest 框架中的基于会话的与令牌身份验证

未找到身份提供程序配置 - 使用 FacebookAuthProvider 反应本机 Firebase 身份验证

裸反应本机项目的firebase身份验证

从React js应用读取Express会话cookie