我正在使用 django 和 React 实现一个身份验证系统。这两个应用程序分别在端口 8000、3000 上运行。我使用 Djoser 包实现了身份验证系统。该包使用一些依赖项social_core和social_django。一切似乎都配置正常。我点击登录谷歌按钮...我被重定向到谷歌登录页面,然后返回到端口 3000 处的前端 React 应用程序,并在 url 上显示状态和代码参数。
此时,我将这些参数发布到后端。后端尝试使用以下代码验证状态检查会话存储中是否存在状态密钥(social_core/backends/oauth.py)
def validate_state(self):
"""Validate state value. Raises exception on error, returns state
value if valid."""
if not self.STATE_PARAMETER and not self.REDIRECT_STATE:
return None
state = self.get_session_state()
request_state = self.get_request_state()
if not request_state:
raise AuthMissingParameter(self, 'state')
elif not state:
raise AuthStateMissing(self, 'state')
elif not constant_time_compare(request_state, state):
raise AuthStateForbidden(self)
else:
return state
Run Code Online (Sandbox Code Playgroud)
此时,由于某些原因,状态会话密钥不存在......并且我收到一条错误,指出在会话数据中找不到状态(错误如下)
{"error":["State could not be found in server-side session data."],"status_code":400} …Run Code Online (Sandbox Code Playgroud) django django-socialauth django-rest-framework reactjs djoser
我对 React 很陌生,我正在遵循不同的教程来尝试了解基础知识。我使用的是react v17。
在这些教程中,我在文件夹结构中看到了一个名为 serviceWorker.js 的文件,该文件用于制作渐进式 Web 应用程序。
我用 npx 生成了我的项目,但在我的文件夹结构中,我找不到这个文件。这是一个错误吗?或者它是被弃用的东西?或者我必须手动添加它?
我在使用 useEffect() 和dispatch() 操作时遇到问题。我正在使用最新版本的react“^18.1.0”。基本上,我有以下在简单的代码中定义的代码。
const Item = () => {
const dispatch = useDispatch()
const user = useSelector(state => state.authReducer.user)
useEffect(() => {
dispatch(fetchItems()).then(res => console.log(res)).catch(err => console.log(err))
}, [dispatch])
return (
<div id='data-container'>
<Navbar />
<div id='data-wrap'>
Data
</div>
</div>
);
}
export default Item
Run Code Online (Sandbox Code Playgroud)
fetchItems() 是一个简单的函数,它从 API 获取一些数据。
问题是该操作被调度两次,但我希望该操作仅被调度一次。
任何帮助的人将不胜感激。
谢谢。