javascript - 如何拦截组件以检查权限
问题描述
我有很多静态表单,当他单击主菜单并转到特定路线时,我会向用户显示这些表单,我现在要做的是检查当该组件是否有权访问时,我可以通过做一个简单post
的服务器来做到这一点,但我很困惑,我不知道应该在哪里做这个检查或post
。
以下是我想到的一些解决方案:
1- 编写一个Higher order component
并用它包装每个静态组件
2- 创建一个基类并让每个静态表单在父类中进行此检查时继承它
3- 或者使用路由作为一个解决方案,因为我正在使用react-router
?
我将不胜感激任何帮助或提示。谢谢。
解决方案
我也使用类似react-router
的方法。我制作了自己的路由组件,该组件围绕react-router
' 检查权限并有条件地呈现路由或重定向的路由。
如果您每次都进行 api 调用,那么它看起来会接近此。
class AppRoute extends Component {
state = {
validCredentials: null
}
componentDidMount() {
// api call here + response
if (ok) {
this.setState({validCredentials: true})
} else {
this.setState({ validCredentials: false})
}
}
render() {
const { validCredentials } = this.state
if (validCredentials) {
return <Route {...this.props} />
} else if (validCredentials === false) {
return <Redirect to="somewhere"/>
}
return null
}
}
推荐阅读
- package - 什么包控制 JavaScript 的功能
- go - 在 Google Cloud 上设置转发代理
- airflow - 首次登录 Apache Airflow 要求输入用户名和密码,用户名和密码是什么?
- angular - 状态传递的 Angular Ionic 参数
- python - 使用熊猫合并excel表格
- azure - 有没有办法像网站一样将 Azure VM 上的文件夹共享给公众?
- c - 为什么这段代码在 ANSI C 中出现编译错误?
- vb.net - 引用包含 DataGridView 的 UserControl
- typescript - 具有访问修饰符的成员异步箭头函数的正确语法是什么?
- python - 使用python读取密码锁定的文本文件