Учитывая следующий контроллерЗакрепление Сущности с авторизацией Claims Based в Web Api 2 OData Endpoint
namespace MyNamespace.Api.Controllers
{
[Authorize]
public class AccountController : ODataController
{
private Entities db = new Entities();
// GET odata/Account
[Queryable]
[ClaimsPrincipalPermission(SecurityAction.Demand, Operation = "Read", Resource = "Account")]
public IQueryable<Account> GetAccount()
{
return db.Accounts();
}
...
}
}
Я переопределять значение ClaimsAuthorizationManager.CheckAccess(...)
public class AuthorizationManager : ClaimsAuthorizationManager
{
public override bool CheckAccess(AuthorizationContext context)
{
var resource = context.Resource.First().Value;
var action = context.Action.First().Value;
return Policies.Validate(resource, action);
}
}
Это полезно только до точки, где я могу проверить, действительно ли Не рекомендуется Current Principal
Read
Account
. Однако, если я хочу проверить, какие учетные записи определенному пользователю разрешено читать, я теряюсь.
Предположим, у меня есть пользователь Менеджера, который должен иметь возможность читать все Учетные записи, для которых он является менеджером, в то время как пользователь, не являющийся менеджером, должен иметь возможность читать только свою собственную учетную запись.
Есть ли наилучшая практика для этого или вы сделали что-то подобное ранее и даете мне несколько намеков на поиск?
Great :) More reading. Говорят, что печатная индустрия умирает, но я прошу не согласиться. Конечно, есть Kindle, но я предпочитаю печатные копии. –