reactjs - 反应路由器、重定向、firebase auth 和私有路由:管理它的最佳方式
问题描述
我正在使用 reactjs 开发前端管理员,并且我想仅在经过身份验证后才授予对所有页面(包括页面的导航和通用模板)的访问权限。如果用户未通过身份验证,我只想显示登录表单,仅此而已。我已经这样做了:
render() {
if (this.state.isAuthenticated === false) {
return (
<div className="App">
<BrowserRouter>
<div>
<Switch>
<Route path="/" component={Login} />
</Switch>
</div>
</BrowserRouter>
</div>
);
}
return (
<div className="App">
<BrowserRouter>
<div>
<Navigator isAuthenticated={this.state.isAuthenticated} />
<Switch>
<Route path="/login" component={Login} />
<PrivateRoute isAuthenticated={this.state.isAuthenticated} path="/" exact component={Home} />
<PrivateRoute isAuthenticated={this.state.isAuthenticated} path="/contact" exact component={Contact} />
<PrivateRoute isAuthenticated={this.state.isAuthenticated} path="/shop" exact component={Shop} />
<Route render={() => <h1>Page not found</h1>} />
</Switch>
</div>
</BrowserRouter>
</div>
);
}
}
这是一种好方法还是坏方法?我怎样才能以更好的方式做到这一点?
谢谢
解决方案
推荐阅读
- flutter - Flutter:使用带有 http 请求的 Firebase 实时数据库实现分页
- javascript - socket.ion passport.js、express.js 和身份验证标头
- reactjs - 如何在 react-leaflet 中使用 leaflet.bezier 插件?
- sqlalchemy - 在两个 SQLAlchemyObjectType 之间共享元类
- javascript - 如何检查邮递员响应中是否没有特定数据?
- javascript - 禁止使用用户 ID discord.js 的用户
- elasticsearch - 如何对 Secured ElasticSearch 执行 curl 命令(在 Openshift 命名空间 openshift-logging 中运行的 ElasticSearch)
- c# - 接受泛型参数为 null 的方法
- swift - 在 swift 上,如何以编程方式隐藏光标并禁用 UITextfield 的剪切/粘贴
- javascript - indexOf 无法识别单词