Пользовательский основной атрибут авторизации Asp.Net для платных функций - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь понять, как лучше всего реализовать следующее: как администратор, я могу создавать пакеты функций.Каждый пакет функций представляет собой сущность в приложении, которая включает в себя набор функций, которые пользователь может приобрести.

    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; }
}

Например: Бронзовый пакет может иметь следующие функции: «can-create-Remder, Can-See».-аналитика и т. д. "

Каждый пользователь может приобрести более одной упаковки.Это описано с использованием этой модели:

    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 () {}

Создание новой политики для каждой функции кажется сложным.Есть ли лучший способ?

...