目前我在我的项目中使用了类似的东西:
IPermission permission = new PrincipalPermission(null, "MyFancyRole");
permission.Demand();
现在随着.NET Core的兴起,我尝试将该项目迁移到后者并且存在安全问题,因为我(几乎)没有任何线索,什么会取代.NET Core中的PrincipalPermission。
那么有没有人对此有所了解?最后一个有根据的猜测?
PS:我说几乎没有线索,因为我肯定可以用IsInRole("...")
替换它,如果没有则抛出SecurityExceptions。我只是想知道是否有任何推荐的替代品。
答案 0 :(得分:2)
PrincipalPermission
是Code Access Security的一部分,不再存在。现在所有身份都是ClaimsPrincipal
。所以,你是对的,你可以使用IsInRole
检查角色,或者,如果您使用的是ASP.NET,则使用授权和policies。
您也可以在自己的代码中使用策略,它们没有链接到ASP.NET,您可以在DI中注册类并在构造函数中注入IAuthorizationService
,然后调用AuthorizeAsync并且做出相应的反应。