从PrincipalPermission迁移

时间:2016-02-29 11:13:28

标签: .net security .net-core

目前我在我的项目中使用了类似的东西:

IPermission permission = new PrincipalPermission(null, "MyFancyRole");
permission.Demand();

现在随着.NET Core的兴起,我尝试将该项目迁移到后者并且存在安全问题,因为我(几乎)没有任何线索,什么会取代.NET Core中的PrincipalPermission。

那么有没有人对此有所了解?最后一个有根据的猜测?

PS:我说几乎没有线索,因为我肯定可以用IsInRole("...")替换它,如果没有则抛出SecurityExceptions。我只是想知道是否有任何推荐的替代品。

1 个答案:

答案 0 :(得分:2)

PrincipalPermission是Code Access Security的一部分,不再存在。现在所有身份都是ClaimsPrincipal。所以,你是对的,你可以使用IsInRole检查角色,或者,如果您使用的是ASP.NET,则使用授权和policies

您也可以在自己的代码中使用策略,它们没有链接到ASP.NET,您可以在DI中注册类并在构造函数中注入IAuthorizationService,然后调用AuthorizeAsync并且做出相应的反应。