Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应:如何根据状态代码200从登录页面重定向到AppLayout页面?_Javascript_Jquery_Reactjs_Axios_Create React App - Fatal编程技术网

Javascript 反应:如何根据状态代码200从登录页面重定向到AppLayout页面?

Javascript 反应:如何根据状态代码200从登录页面重定向到AppLayout页面?,javascript,jquery,reactjs,axios,create-react-app,Javascript,Jquery,Reactjs,Axios,Create React App,大家好,谢谢你们抽出时间来读这篇文章。 我对此很陌生,我很感激你能考虑的任何帮助。 客户端坚持自己在jQuery中进行身份验证(出于安全原因),我在Index.html中链接了jQuery。身份验证成功后,jQuery将响应一个包含[object]的警报窗口。 我被告知根据状态代码200从登录页面重定向到AppLayout页面,但我在react文档中找不到任何关于这一点的信息,甚至找不到任何可能的信息。 我与服务器的交互是通过Swagger API实现的。 我正在使用带有react路由器和

大家好,谢谢你们抽出时间来读这篇文章。 我对此很陌生,我很感激你能考虑的任何帮助。
客户端坚持自己在jQuery中进行身份验证(出于安全原因),我在Index.html中链接了jQuery。身份验证成功后,jQuery将响应一个包含[object]的警报窗口。
我被告知根据状态代码200从登录页面重定向到AppLayout页面,但我在react文档中找不到任何关于这一点的信息,甚至找不到任何可能的信息。
我与服务器的交互是通过Swagger API实现的。 我正在使用带有react路由器和axios的create react应用程序处理所有其他API请求。
是否有一种方法可以针对状态代码并基于该条件执行重定向?
否则,您能否建议只使用axios的最安全的身份验证方法,而不使用jQuery?
我知道这很遥远,但是非常感谢您的任何建议/链接


非常感谢

这绝对是可能的。最好的选择是使用axios在应用程序中执行身份验证。实施细节将取决于您的React路由器版本。假设为v4,您可以使用history.push(“/new route”)方法将您导航到应用程序中的新路由。或者,您可以使用执行类似功能的重定向组件。请参阅此处的文档:

使用重定向时,它将如下所示:

render() {
  if (this.state.userIsAuthed) {
    return <Redirect to='/app' />
  }
  return <LoginInternals />
}
render(){
if(this.state.userIsAuthed){
返回
}
返回
}
如果你可以在应用程序中发布,你将在发布成功处理程序中将userIsAuthed设置为true


如果您真的想在外部使用jQuery,可以将成功信息存储在cookie或本地存储器中。在react登录路径中的componentWillMount中,您可以检查cookie或本地存储中的成功信息,并相应地更新状态。

如果您使用react路由器挂钩

import {useHistory} from "react-router-dom"
const history = useHistory()
if(response.status === 200){
    history.push('/path')
  }