假设,我有两个模型:
class Customer {
public GUID CustomerID { get; set; }
public IEnumerable<User> SubscribedUsers { get; set; }
//other fields
}
和
class User {
public GUID UserID { get; set; }
//other fields
}
我想使用 ASP.NET 身份实现 BL 以限制身份验证:如果用户在订阅用户中 - 否则授予访问权限 - 拒绝。
我不要求你为我实现它。只要给我最佳实践,我该怎么做,以及我可以在哪里使用这个业务逻辑的包装......
我想我必须实现自定义OAuthAuthorizationServerProvider
,是吗?
我认为最简单的方法是添加新的声明(https://learn.microsoft.com/en-us/aspnet/core/security/authorization/claims(。将其称为 SubscribedOnly 并将此声明添加到指定用户(如何在 ASP.NET 标识中添加声明(
一般来说,在您尝试覆盖某些内容之前,我会尝试找到一种内置的可能性来解决您的问题。
授权逻辑将放置在控制器中。您可以将此属性 [授权] 放在控制器的顶部(这意味着每个 ActionMethod 仅适用于登录用户(或应保护访问的每个 ActionMethod 之上。
对于广泛的实现,使用此属性非常简单明了!!
如果你正在寻找一个好的资源来理解身份或定制它,我会推荐John Attens博客:http://johnatten.com/?s=identity