CanCan gem for MVC .NET

时间:2012-06-20 10:15:48

标签: asp.net-mvc permissions cancan

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

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

由于

5 个答案:

答案 0 :(得分:3)

我最终看到了http://www.develop.com/wifclaimsbasedauthorizationone它的功能与CanCan一样。

例如

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

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

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

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

使用MVC5和一个ASP.Net声明直接进入.Net

的核心

答案 1 :(得分:2)

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

在ASP.NET Core文档中查看this page。它有点像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>
   }