次のコントローラーが与えられた場合
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
。ただし、特定のユーザーが読み取りを許可されているアカウントを確認したい場合は、道に迷ってしまいます。
マネージャーであるすべてのアカウントを読み取ることができるマネージャー ユーザーがいるのに対し、マネージャー以外のユーザーは自分のアカウントのみを読み取ることができるとします。
これに関するベスト プラクティスはありますか、それとも以前にこのようなことをしたことがありますか?探すためのヒントをいくつか教えてください。