ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 18. 基于Claim和Policy的受权 下 - 自定义Policy


在加一个策略,要求cliam的值必须是123

第二个参数的类型


可变参数 ,能够是这三种类型

变成一个集合也能够

策略内置的几种方式

html

自定义


RequireAssetion的参数是个Func,Func能够理解为一个匿名方法,匿名方法有个参数叫作Conext,全名叫作

全名叫作AuthorizationHanlderContext

p判断当前用户是否有个Edit Albums的cliam。若是有就返回true


上面和下面道具是同样的 下面的能够自定义写一个代码进行更复杂的裸机判断

可变参数,手写一些类,让类实现这个接口。参数里面能够加上自定义的requirment类











https://www.cnblogs.com/cgzl/p/9282059.html

6分29秒


 测试


继承自:IAuthorizationRequirement。
属性就是要暴露给外面使用

让这个邮箱以126.com为结尾的邮箱


Requirement有了,怎么怎么处理呢?须要一个handler
这里加多个自定义的Requirement

新建类EmailHandler

实现接口:AuthorizationHandler泛型的类型就是 EmailHandler 

查看类型是Email 的

把类别单独独立出来



若是知足要求了就返回成功,不然就是啥也没干。返回的不是失败,是啥也没干
ui

注册这个Handler



再作一个无参的Requirement。意思是要找合格的用户,具体怎么合格要看handle了

建立handler,能够编辑专辑的用户就是合格的用户



争对这个requirement再写一个handler

注册一个requirement和两个handler



如今这个策略里面有两个requirement,看看是两个都知足呢仍是知足一个就能够

给AlbumController加上属性

能够加多个测流,不过这里我就先添加一个策略作测试

这一个策略里面有两个Requirement,看看最终是知足一个仍是两个都要知足


咱们这个Email的Requirement里面判断是要Cliam带Email的 当前里面的用户应该是都不知足的

可是确定有用户知足第二个要求


测试下这个用户 有Editg Albums这个Cliam

管理员角色下有这两个用户

这三个用户都知足第二个Requirement的其中的一个handler。可是没有人知足126邮箱的handler。虽然有126邮箱可是没放在Claim里面

这个用户应该有权限的 ,。可是点进去以后,提示不行

也就是策略里面的这两条必需要同时知足,如今把上面Email的注释掉

此次能够访问了

这个用户知足Edit Albums这个要求

被拒绝了

这里加个字母s




 3d

相关文章
相关标签/搜索