假设我有两个模型:
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以限制授权:如果用户在SubscribedUsers中 - Access被授予else - 被拒绝。
我不要求你为我实施它。只要给我最好的实践,我该怎样才能做到这一点,以及我可以在哪里讨论这种业务逻辑...
我想我必须实施自定义OAuthAuthorizationServerProvider
,是吗?
答案 0 :(得分:0)
我认为最简单的方法是添加新的声明(https://docs.microsoft.com/en-us/aspnet/core/security/authorization/claims)。称之为SubscribedOnly并将此声明添加到指定用户(How to add claims in ASP.NET Identity)
总的来说,在尝试覆盖某些内容之前,我会尝试找到解决问题的内置方法。
授权逻辑将放在您的控制器中。您可以将此属性[授权]放在Controller的顶部(这意味着每个ActionMethod仅适用于已登录的用户),或者在每个ActionMethod上放置应该受到保护的访问权限。
对于广泛的实现,使用此属性非常简单直接!!
如果您正在寻找一个好的资源来理解身份或自定义它,我会推荐John Attens博客:http://johnatten.com/?s=identity