9

我正在寻找提供与 Rails 中的 CanCan gem 类似的功能的 NuGet 包(https://github.com/ryanb/cancan)。

有谁知道提供类似功能的插件?或者一个简单的方法来实现这个?

谢谢

4

5 回答 5

3

我最终查看了http://www.develop.com/wifclaimsbasedauthorizationone,它的功能与 CanCan 非常相似。

例如

ClaimsPrincipalPermission.CheckAccess("Customer","Add");

将检查用户是否有权添加客户。

我们正在测试http://thinktecture.github.com/Thinktecture.IdentityModel.45/

基本上是基于声明的 .Net 授权

使用 MVC5 和 One ASP.Net Claims 直接融入 .Net 的核心

于 2012-12-22T00:28:57.487 回答
1

最近,我在搜索有关基于活动的授权的内容,发现了一些有趣的教程,如何实现它:https ://mkarczewski.wordpress.com/2013/10/21/activity-based-authorization-in-modular-systems/

我也找到了这个库,看起来很酷!这是东西,我希望能找到。https://github.com/michelgrootjans/CanI/blob/master/README.md

于 2015-08-29T07:06:31.993 回答
0

在 .NET 中,您应该使用Membership ProviderAuthorize属性。

于 2012-06-20T13:26:53.973 回答
0

在 ASP.NET Core 文档中查看此页面。它有点类似于 cancan 所做的。

你像这样编写一个授权处理程序:

public class DocumentAuthorizationHandler :
       AuthorizationHandler<OperationAuthorizationRequirement, Document>
   {
       public override Task HandleRequirementAsync(AuthorizationHandlerContext context,
                                                   OperationAuthorizationRequirement requirement,
                                                   Document resource)
       {
           // Validate the operation using the resource, the identity and
           // the Name property value from the requirement.

           return Task.CompletedTask;
       }
   }

现在您可以在控制器中使用以下代码:

if (await authorizationService.AuthorizeAsync(User, document, Operations.Read))
   {
       return View(document);
   }
   else
   {
       return new ChallengeResult();
   }

或在您看来:

@if (await AuthorizationService.AuthorizeAsync(User, Model, Operations.Edit))
   {
       <p><a class="btn btn-default" role="button"
           href="@Url.Action("Edit", "Document", new { id = Model.Id })">Edit</a></p>
   }
于 2017-01-13T18:31:58.563 回答