在本机反应中获取 csrf 令牌
get csrf token in react native
我已经构建了 django 服务器来管理我的数据,然后我有桌面反应应用程序,我可以在其中创建新的 users/login/post 数据,它工作完美,它基于 csrf 令牌验证并且没有问题那。但是我也有 react-native 应用程序,它应该让用户登录,并获取属于他的数据。这里有一个问题,如何在 React Native 中获取 CSRF 令牌?在桌面应用程序中,它看起来或多或少像这样,但我不知道如何登录本机,因为我不能简单地使用 csrf 令牌获取 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 令牌 (GET /api/csrftoken) 和 Django 视图returns json.
中的 csrf 令牌
我已经构建了 django 服务器来管理我的数据,然后我有桌面反应应用程序,我可以在其中创建新的 users/login/post 数据,它工作完美,它基于 csrf 令牌验证并且没有问题那。但是我也有 react-native 应用程序,它应该让用户登录,并获取属于他的数据。这里有一个问题,如何在 React Native 中获取 CSRF 令牌?在桌面应用程序中,它看起来或多或少像这样,但我不知道如何登录本机,因为我不能简单地使用 csrf 令牌获取 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 令牌 (GET /api/csrftoken) 和 Django 视图returns json.
中的 csrf 令牌