특정 방법에서 컨트롤러 레벨에서 적용된 속성을 무시할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1213036

문제

컨트롤러 레벨에서 인증 속성을 적용한 경우 해당 컨트롤러의 메소드 중 하나에서이를 무시할 수 있습니까?

감사

제임스

도움이 되었습니까?

해결책

그것은 당신이 원하는 종류의 "재정의"에 달려 있습니다. 클래스에있는 속성을 제거 할 수는 없지만 일을보다 제한적으로 만들기 위해 메소드에 속성을 다시 추가 할 수 있습니다.

주석에 대한 응답으로 업데이트하십시오. 첫째, 자신만의 승인을 만드는 것은 다소 위험합니다. AuthorizeatTribute에는 캐시가 승인되지 않은 사용자에게 보호 된 컨텐츠를 제공 할 수 없도록하기 위해 캐싱 속성과 상호 작용하는 코드가 포함되어 있습니다. 최소한, 당신은 전적으로 새로운 것을 만들기보다는 기존 승인을 하위 유형으로 유형해야합니다. 그러나 일반적으로 기존 ASP.NET 멤버십 제공 업체를 작성하여 기존의 승인을 사용하고 승인을 전문화하는 것이 더 나은 아이디어입니다.

나는 컨트롤러의 필터를 "무시하는"동작에 필터를 갖는 것이 좋은 디자인이라고 생각하지 않습니다. 그러나 컨트롤러의 필터 설계를 변경하여 특정 이름의 동작에 대한 승인을 요구하지 않아도됩니다. 예를 들어, authorizeattribute.authorizecore 메소드를 대체하여 사용자 이름과 역할에 대한 기존 메소드 테스트와 같은 방식으로 작업 이름을 테스트 할 수 있습니다. 스레드 안전에 관한이 방법의 의견을 매우주의 깊게주의하십시오.

다른 팁

이것이 정확히 같은 질문인지 확실하지 않지만 도움이 될 수 있습니다 ...

ActionFilter On Action Method를 만드는 방법 컨트롤러에서 동일한 ActionFilter보다 우선합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top