Asp.net mvc 用于MVC.NET的CanCan gem

Asp.net mvc 用于MVC.NET的CanCan gem,asp.net-mvc,permissions,cancan,Asp.net Mvc,Permissions,Cancan,我正在寻找NuGet包,它提供了与rails()中的CanCan gem类似的功能 有人知道提供类似功能的插件吗?还是一种简单的实现方法 谢谢在.NET中,您应该使用和授权属性。我最后看到它的功能与CanCan非常相似 比如说 ClaimsPrincipalPermission.CheckAccess("Customer","Add"); 将检查用户是否具有添加客户的权限 我们正在测试 基本上是基于声明的.Net授权 通过MVC5和一个ASP.Net声明,经过长时间的搜索,我发现这些文章非常有

我正在寻找NuGet包,它提供了与rails()中的CanCan gem类似的功能

有人知道提供类似功能的插件吗?还是一种简单的实现方法


谢谢

在.NET中,您应该使用
授权
属性。

我最后看到它的功能与CanCan非常相似

比如说

ClaimsPrincipalPermission.CheckAccess("Customer","Add");
将检查用户是否具有添加客户的权限

我们正在测试

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


通过MVC5和一个ASP.Net声明,经过长时间的搜索,我发现这些文章非常有用:



更新
微软2013年推出的最新版本:
样本:

我更喜欢CodeProject教程中使用的代码,它基于Thinktecture guys的框架,源代码位于:

请记住,从持久性的角度来看,CodeProject文章已经过时了。

现在MembershipReboot支持EntityFramework、MongoDB和RavenDB作为数据存储。

最近,我搜索了一些关于基于活动的授权的内容,发现了一些有趣的教程,介绍了如何实现它:

我还发现了这个图书馆,看起来很酷!这是我希望找到的东西

查看ASP.NET核心文档。这有点像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, Model, Operations.Edit))
   {
       <p><a class="btn btn-default" role="button"
           href="@Url.Action("Edit", "Document", new { id = Model.Id })">Edit</a></p>
   }
@if(等待AuthorizationService.authorizationasync(用户、模型、操作、编辑))
{

}
我不是投票人,但我认为这是因为会员资格提供了角色权限,而不是活动权限。也许我错了,但是对于Cancan,我可以通过在能力文件中定义“能力”来限制执行特定操作的访问。假设我有一个图片资源和用户,一个用户想要编辑图片-我需要让他在会员提供商中担任编辑角色吗?使用cancan,我可以简单地添加代码:“用户拥有编辑图片资源的权限(如果他拥有该资源)”,这种逻辑可以在custom
Authorize
属性中实现。您是否找到基于活动的授权的良好实现?不,很遗憾,我没有。我最后编写了一个自定义授权属性。如果你找到一个很好的实现方法,请告诉我。
@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>
   }