鑑於下列控制器保護實體要求基於授權2的OData端點
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
。但是,如果我想檢查某個用戶被允許閱讀哪些帳戶,我就會迷路。
比方說,我有一個經理用戶,他應該能夠讀取他是經理的所有賬戶,而非經理用戶應該只能讀取他們自己的賬戶。
是否有這樣的最佳做法,或者你有沒有做過這樣的事情,並給我一些提示尋找?
很棒:)更多閱讀。他們說印刷業正在走向滅亡,但我不同意。當然有Kindle,但我更喜歡印刷版。 –