使用React和Redux实施CASL

时间:2019-03-02 23:15:52

标签: javascript node.js reactjs casl

我将参考本文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

我要实现的目标: 我的申请是针对大学的,是对大学研究人员资助网站的翻版。 (即,研究人员可以查看可用的赠款,将其申请等),我将拥有管理员,他们可以登录到同一应用程序,并能够上传赠款并接受/拒绝研究人员的赠款申请。因此,我需要使路由免受用户的某些角色的影响。

我希望它如何工作: 用户登录。 如果研究员->允许他们查看所有资助并申请,还可以查看其状态 如果管理员->请参阅授予申请并接受/拒绝 本质上隐藏了两个人的路线。 (管理员无法申请资助,研究人员无法接受申请等)。

任何有关如何在反应中实现这一点的信息将不胜感激。

0 个答案:

没有答案