我将参考本文https://medium.com/dailyjs/managing-user-permissions-in-your-react-app-a93a94ff9b40
我将在我的React应用程序中针对某些路由实施基于角色的身份验证,并且遇到了CASL。我看到他们有一个反应性的实现,但是在某些方面让我感到困惑。请参见下面的代码,稍后我将进行解释。
import { AbilityBuilder } from 'casl'
function subjectName(item) {
if (!item || typeof item === 'string') {
return item
}
return item.__type
}
export default AbilityBuilder.define({ subjectName }, can => {
can(['read', 'create'], 'Todo')
can(['update', 'delete'], 'Todo', { assignee: 'me' })
});
让我感到困惑的区域是导出默认功能can(['read','create'],'Todo')中的'Todo'
这是什么“ Todo”?他在文章中这样描述了它, “第二个参数是对象类型,在我们的案例中是Todo,适用此规则。” 类型,来自subjectName
?
我环顾四周,还找到了一个通过redux(更接近我希望的实现)登录用户的示例,并发现了这个https://github.com/stalniy/casl/issues/148
我要实现的目标: 我的申请是针对大学的,是对大学研究人员资助网站的翻版。 (即,研究人员可以查看可用的赠款,将其申请等),我将拥有管理员,他们可以登录到同一应用程序,并能够上传赠款并接受/拒绝研究人员的赠款申请。因此,我需要使路由免受用户的某些角色的影响。
我希望它如何工作: 用户登录。 如果研究员->允许他们查看所有资助并申请,还可以查看其状态 如果管理员->请参阅授予申请并接受/拒绝 本质上隐藏了两个人的路线。 (管理员无法申请资助,研究人员无法接受申请等)。
任何有关如何在反应中实现这一点的信息将不胜感激。