加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-core – 将参数传递给ASP.NET MVC 6中的需求/策略

发布时间:2020-12-16 07:41:51 所属栏目:asp.Net 来源:网络整理
导读:我试图在ASP.NET vNext中创建自定义授权属性,直到我在这篇文章中找到@blowdart的这个优秀答案: https://stackoverflow.com/a/31465227/1756978 表明授权要求现在是要走的路.答案非常明确,但没有说明如何将参数传递给此要求/策略. 我要做的是移植具有此签名
我试图在ASP.NET vNext中创建自定义授权属性,直到我在这篇文章中找到@blowdart的这个优秀答案:

https://stackoverflow.com/a/31465227/1756978

表明授权要求现在是要走的路.答案非常明确,但没有说明如何将参数传递给此要求/策略.

我要做的是移植具有此签名的MVC 5自定义授权属性:

[Autorizacion(Requires = enumPermission.DeleteCustomer)]

因为我使用在后端/前端镜像的一组非常自定义的权限作为枚举/字符串.

由于这些功能仍然没有记录,我觉得有点迷失……有人可以提供指导吗?

提前致谢

解决方法

事实上,@ blowdart的帖子非常有见地,根据我的理解,要理解的关键是以下内容:

Authorization act upon Identities. Identities are created by
authentication.

因此,身份验证过程似乎创建了身份.

然后(如果您愿意)您可以启动授权流程.这意味着创建一个自定义授权要求,此要求将查看这些身份并对其进行操作.

用简单的英语,这就是我认为正在发生的事情:

>正如在blowdart的帖子中提到的,我们应该有某种形式
认证中间件碰巧做了实际的
认证.一旦成功通过身份验证,您就可以采取任
您想从现在经过身份验证的用户那里获得的信息并创建一个
经过认证的ClaimsPrincipal.

例如,我们可以存储到ClaimsPrincipal中
用户拥有的权限.
>然后,当您创建授权要求时,请查看
ClaimsPrincipal,从中提取权限集
ClaimsPrincipal并根据任何事情采取适当的行动
你想要的商业规则.

假设您无法将权限集存储到
ClaimsPrincipal由于某种原因,可以轻松存储UserId
从需求中,从中读取UserId
ClaimsPrincipal,调用数据库并获取权限集
然后对他们采取行动.

结论:

所以简而言之,我认为你没有把东西传递给要求,我想你是从ClaimsPrincipal中获得的.

在您的示例中,您可以创建一个读取ClaimsPrincipal的需求,并将任何值与您的Enum进行比较并对其进行操作.

让我们知道你做了什么以及它是否有效.

如果我对此的理解是错误的,那么无论如何,请随意纠正我,因为所有这些都是新的东西:-)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读