惨惨宝石的MVC .NET(CanCan gem for MVC .NET)

2019-07-30 00:56发布

我要寻找的NuGet包,提供了类似的功能在轨康康舞宝石( https://github.com/ryanb/cancan )。

有谁知道一个插件,它提供了类似的功能? 或简单的方式来实现这一点?

谢谢

Answer 1:

最后我看着http://www.develop.com/wifclaimsbasedauthorizationone它确实非常多惨惨呢。

例如

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

会检查用户是否有权限才能添加客户。

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

基本上要求基于对于.NET授权

与MVC5和一张ASP.Net权利要求烘焙右转入的.Net的核心



Answer 2:

一个长长的搜索后,我发现这些文章有用:

http://msdn.microsoft.com/en-us/library/ff359101.aspx http://www.codeproject.com/Articles/639458/Claims-Based-Authentication-and-Authorization HTTP://www.codetails。 COM / punitganshani /使用-声明的标识与- simplemembership-在-ASP净MVC / 20130525
http://leastprivilege.com/
http://www.postsharp.net/aspects/examples/security

UPDATE
微软最新的2013版本介绍: http://blogs.msdn.com/b/webdev/archive/2013/06/27/introducing-asp-net-identity-membership-system-for-asp-net-applications。 ASPX
样品:
https://stackoverflow.com/a/18751036/316343
https://github.com/rustd/AspnetIdentitySample http://msdn.microsoft.com/en-us/library/hh377151.aspx

我更喜欢它是基于从Thinktecture家伙框架CodeProject上的教程中所使用的,源代码,请访问:
https://github.com/brockallen/BrockAllen.MembershipReboot https://github.com/thinktecture/Thinktecture.IdentityModel.45

只要记住,CodeProject上的文章是从视持久点过时。
现在MembershipReboot支持的EntityFramework,MongoDB的和RavenDB作为数据存储。



Answer 3:

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

我也发现了这个库,而且看起来非常酷! 这是什么东西,我希望能找到。 https://github.com/michelgrootjans/CanI/blob/master/README.md



Answer 4:

在.NET你应该使用成员资格提供Authorize属性。



Answer 5:

看看这个页面的ASP.NET核心文档。 它有点类似做什么惨惨。

你写的授权处理,像这样:

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>
   }


文章来源: CanCan gem for MVC .NET