付费功能的自定义Asp.Net核心授权属性

时间:2019-03-21 13:15:17

标签: entity-framework asp.net-core asp.net-core-2.0 asp.net-authorization

我试图了解什么是实现以下目标的最佳方法: 作为管理员,我能够创建功能包。每个功能包都是应用程序中的一个实体,其中包括用户可以购买的功能的集合。

    public class FeaturesPackage
{
    [Required]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid Id { get; set; }

    [MaxLength(30)]
    [Required]
    public string Title{ get; set; }

    [Required]
    public string Features { get; set; }

    public decimal Price { get; set; }
}

例如: 青铜色软件包可以具有以下功能:“可以创建提醒,可以看到分析等”。

每个用户可以购买多个包裹。使用此模型对此进行描述:

    public class FeaturesPackagePurchase
{
    [Required]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid Id { get; set; }

    [Required]
    [ForeignKey("Owner")]
    public int OwnerId { get; set; }

    [Required]
    [ForeignKey("FeaturesPackage")]
    public Guid FeaturesPackageId { get; set; }

    [Required]
    public DateTime PurchaseDate { get; set; }

    [Required]
    public decimal Price { get; set; }

    public DateTime StartDate { get; set; }

    public DateTime ExpirationDate { get; set; }

    public UserAppData Owner { get; set; }
    public FeaturesPackage FeaturesPackage { get; set; }
}

现在,我想为具有指定打开功能的用户阻止某些控制器方法(路由)。像

    [Authorize(Feature="can-see-analytics")]

public AnalyticsData GetUserAnalytics(){ }

为每个功能创建新策略似乎很复杂。有更好的方法吗?

0 个答案:

没有答案
相关问题