我想拥有一个像[Verified]
这样的自定义授权过滤器,以检查用户是否已通过电子邮件确认,这是我的User
类(IsEmailConfirmed
)的属性。我已经阅读了有关.NET Core中授权的docs,但不确定应该采用哪种正确方法。
此外,我想使用另一个过滤器来检查经过身份验证的用户是否是他尝试更新/删除的资源的所有者。我所有的实体都有一个CreatedBy
属性,因此我必须对照登录的用户进行检查。
哪种授权类型(角色,索赔,保单等)最适合每种情况?
通常在有第三方提供索赔值时使用索赔。您的情况将不适用。
您可以同时使用角色和策略,但是对于第一种情况,角色是最容易实现的。每当电子邮件经过验证时,您都可以创建类似于VerifyUser之类的Role并将其分配给User。如果这是唯一要求,则“角色”是最好的方法。
对于第二种情况,策略是实现的最佳方法,因为它需要DB调用来获取资源并标识用户是否可以访问资源。无论如何,由于您将要实施策略,因此可以在策略模型本身中实施电子邮件验证,而无需使用“角色”方法。