사용자 액세스 권한에 따라 기능이있는 패널을 만들려면 사용자 정의 권한 기반 인증을 사용하고 있습니다. 사용자 클레임은 캐시 ICashClient
에 저장됩니다. 특정 메뉴는 특정 컨트롤러 메소드를 참조하기 만합니다.PostSharp AOP를 사용하여 메소드 사용 권한 부여
문제 : 특정 방법에 대한 직접 링크를 입력하기 만하면 액세스 권한 누락으로 인해 사용할 수없는 방법을 사용할 수 있습니다.
제 아이디어는 특정 방법을 태깅하여 허용되지 않은 실행을 방지 할 수 있도록 애스펙트를 만드는 것입니다.
OnEntry
메서드에서 다시 인증하고 싶습니다.
다음 예에서는 서번터에 대한 요청이 Ajax
인지 여부를 확인할 수 있습니다.
public override void OnEntry(MethodExecutionArgs args)
{
var controller = args.Instance as MyController;
if (controller != null)
{
if (!controller.Request.IsAjaxRequest())
throw new Exception ($"{args.Method.Name} invalid AJAX request");
}
base.OnEntry(args);
}
무엇 possiblities 나는 현금에서 기존 데이터를 조회하려면이 OnEntry
방법의 맥락에서해야합니까? 어떻게이 현금을 거기에서 액세스 가능하게 만들 수 있습니까?
편집 :
public TResult ExecuteWithCache<TResult>(ICustomQuery<TResult> query)
{
try
{
//class for creating fingerprint of query
var customQueryHash = (ICustomQueryHash<TResult>)query;
//fingerprint of the query
var queryString = customQueryHash.GetQueryHash();
//cash which might holds data
var cachedResult = _cacheClient.Get<TResult>(queryString);
...
}
catch(){}
}
_cashClient
가 확장 ICashClient의 구현이다 내 컨트롤러있어서 다음시킨 요청 된 데이터를 검색하기위한 매우 QueryProcessor
호출 (의존성 주입을 사용하여) 사용.
현재 코드에서 캐시에 액세스하는 방법의 예를 제공 할 수 있습니까? –
업데이트 설명 –