django - 在 native react 中获取 csrf token

标签 django reactjs react-native csrf

我已经构建了 django 服务器来管理我的数据,然后我有桌面 react 应用程序,我可以在其中创建新用户/登录/发布数据,它工作完美,它基于 csrf token 验证,没有问题。但是我也有 react-native 应用程序,它应该让用户登录,并获取属于他的数据。这里有一个问题,如何在 React Native 中获取 CSRF token ?在桌面应用程序中,它看起来或多或少像这样,但我不知道如何登录 native ,因为我不能简单地使用 csrf token 获取 Cookie。

componentDidMount() {
    const csrfToken = Cookies.get('csrftoken')
    this.setState({csrfToken})

  }

    loginHandler = login_data => {
    this.setState({
      user: login_data.user,
      password: login_data.password
    }, () => {
      const auth = {
        "username": this.state.user,
        "password": this.state.password
      }

      fetch("http://localhost:8000/data/", {
        method: 'POST',
        credentials: 'include',
        headers: {
          "X-CSRFToken": this.state.csrfToken,
        },
        body: JSON.stringify(auth)
      })
        .then((res) => res.json())
        .then(resp => console.log(resp))
        .then(() => this.getData())
        .catch(() => this.setState({
          user: "",
          passowrd: ""
        }))
    })
  };

最佳答案

有两种选择:

  • 如果您的 django 应用程序 API 仅服务于移动应用程序 (react native),那么对于应用程序使用的那些 API,您根本不需要 CSRF 保护。这是因为 CSRF 可防止浏览器中的伪造,而不是应用中的伪造。

  • 但如果您的 api 也在浏览器中使用,那么您应该创建一个端点来专门获取 csrf token (GET/api/csrftoken),并使用 Django View 返回 json 中的 csrf token 。

关于django - 在 native react 中获取 csrf token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59628605/

相关文章:

reactjs - React 类组件到 Hooks

node.js - 如何更改网站主题并保存此主题,使其在重新加载时不会更改?

reactjs - 为什么复选框事件处理程序中的 `MouseEvent` 不是通用的?

iOS 库找不到标题

python - django rest framework,order_by 来自 serializers.py 文件的 JSON

django - 在 Django+South 中添加一个非空的外键字段

css - 如何在 React Native 中使用 vw 和 vh css

javascript - 每个 child 都有独特的 "key"属性

django - 为什么在 Django 中检查两个密码是否匹配如此复杂?

django - Apache2 + VirtualEnv IOError : [Errno 13] Permission denied