【问题标题】:Custom authorization filters to check email confirmation and resources ownership自定义授权过滤器以检查电子邮件确认和资源所有权
【发布时间】:2020-07-09 10:24:31
【问题描述】:

我想要一个自定义授权过滤器,例如 [Verified],以检查用户是否已确认电子邮件,这是我的 User 类 (IsEmailConfirmed) 的属性。
我已阅读 docs 关于 .NET Core 中的授权,但不确定正确的方法应该是什么。

此外,我希望有另一个过滤器来检查经过身份验证的用户是否是他尝试更新/删除的资源的所有者。我所有的实体都有一个CreatedBy 属性,所以我必须对照登录用户检查它。

哪些授权类型(角色、声明、策略等)最适合每种场景?

【问题讨论】:

    标签: asp.net asp.net-core .net-core authorize-attribute asp.net-authorization


    【解决方案1】:

    当有第三方提供声明值时,通常会使用声明。在您的情况下,这将不适用。

    您可以同时使用角色和策略,但是,对于第一个场景,角色是最容易实现的。每当验证电子邮件时,您都可以创建类似 VerifiedUser 的角色并将其分配给用户。如果这是唯一的要求,那么角色是最好的方法。

    对于第二种情况,Policy 是最好的实现方式,因为它需要一个 DB 调用来获取资源并确定用户是否可以访问该资源。因为无论如何,您将实施一个策略,您可以在策略模型本身中实施电子邮件验证,从而消除角色方法。

    【讨论】:

    猜你喜欢
    • 2018-08-31
    • 2015-11-21
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 2016-10-27
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多