나머지 API 프레임 워크를 작성 중이므로 db 인증 컨텍스트를 만들고 싶습니다. 컨텍스트는 역할 해결자를 받아 기본 집합을 필터링하는 데 사용합니다. 규칙 집합을 기반으로합니다. 내 첫 번째 시도에서EF 코어에서 Db 리소스 권한 부여
나는 기업은 특정 자원
public class AuthorizationContext : DbContext
{
protected IConstraintResolver _constraintResolver;
public AuthorizationContext(IConstraintResolver constraintResolver)
{
this._constraintResolver = constraintResolver;
}
public override DbSet<TEntity> Set<TEntity>()
{
var defaultSet = base.Set<TEntity>();
var constraints = this._constraintResolver.GetConstraintsForTypeByRole<TEntity>();
var filteredSet = base.Set<TEntity>().AsQueryable();
foreach (var constraint in constraints)
{
filteredSet = filteredSet.Where(constraint);
}
//how do I apply this back to the innerQueryable
return filteredSet;
}
}
에 대한 액세스를 금지하는 설정하지만 난
filteredDBSet
에 다시 내
Queryable
을 변환 할 수 없기 때문에이 I를 컴파일되지 않습니다에 어쩌면 내가 기본 필터를 적용 할 수 있다고 생각.
EF-Core에서 Secure data의 여러 가지 기사를 몇 가지 발견했지만이 방법을 사용하려면 데이터 보호 방법이 필요하지 않습니다.
- 나는 나의 상황이 암시 적으로 안전한 데이터 역할 을 기반으로 할 (컨텍스트를 사용하여 모든 사용자 권한 부여를 확인하기 위해 약 wraping 자신의 쿼리를 걱정하지 않도록.)
- 추가의 많은 사용자를위한 구성
SQL의 메타 데이터를 기반으로 이미 내 표현식을 생성하는 함수가 있습니다. 내 문제가 DBSet
에 필터링 적용 대상입니다.
Expression<TEntity, Bool>
이라고 가정하면 사용자가 내가 결정한 데이터에만 액세스하거나 수정할 수 있도록 내 컨텍스트를 보호 할 수 있습니까?
EFC 2.0 [전역 쿼리 필터] (https://docs.microsoft.com/en-us/ef/core/querying/filters) –
당신은 Entityframework plus의 것들을 언급하고 있습니까? 그 사람들이 ef7에서 작동하지 않는다고 생각 했나요? –
아니요, 링크에서 보시다시피, 이것들은 EF 코어의 일부입니다. –