我将参考这篇文章https://medium.com/dailyjs/managing-user-permissions-in-your-react-app-a93a94ff9b40
我将在我的反应应用程序中为某些路由实施基于角色的身份验证,并遇到了 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' })
});
上面让我感到困惑的区域是导出默认函数中的“Todo” can(['read', 'create'], 'Todo') 这个“Todo”是什么?在文章中他这样描述它,“第二个参数是对象类型,在我们的例子中是 Todo,这个规则适用于它。” 他从哪里得到这个对象类型subjectName
?
我环顾四周,还通过 redux 找到了一个使用登录用户的示例(更接近我希望的实现)并找到了这个https://github.com/stalniy/casl/issues/148
我想要实现的内容:我的申请是针对大学的,并且是针对大学级别的研究人员的资助网站的翻版。(IE 研究人员可以查看可用的赠款、向他们申请等)我将有管理员可以登录到同一个应用程序并能够上传赠款和接受/拒绝研究人员的赠款申请。因此,我需要能够保护路由免受某些用户角色的影响。
我希望它如何工作:用户登录。如果研究人员 -> 允许他们查看所有授权并申请给他们,如果管理员 -> 查看授权申请并接受/拒绝它们,也可以查看他们的状态 本质上隐藏两个人的路线。(管理员不能申请资助,研究人员不能接受申请等)
任何有关如何在反应中实现这一点的信息将不胜感激。