2013-04-25 1 views
0

인증이 필요한 사이트의 모든 섹션을 진행하기 전에 모든 사용자에게 몇 가지 추가 정보를 입력하도록 요구하고 싶습니다.MVC4 인증이 필요한 모든 요청을 가로 채십시오.

나는 [Authorize] 주석에 잡기,하지만 난 Global.asax 또는에서 오버라이드 (override) 할 수있는 방법이 있습니까 어떤 @User.IsInRole("something")

을 무시 꿔 가능성이 있다면?

.IsInRole()에 대한 나의 유일한 사용은 그들에게 다른 정보를 표시하고 거기에 링크를 원하기 때문에 실제로 주석을 얻는 데 필요한 것을 볼 수 있기 때문에 주석을 잡기를 바랄뿐입니다. 희망이 말이 (다소 피곤한).

답변

0

AuthorizeAttribute 자체를 재정의 할 수 있습니다. 그러면 [Authorize]으로 표시된 작업이 호출 될 때 실행되는 OnActionExecuting() 메서드에 액세스 할 수 있습니다. 거기에서 자신 만의 인증 로직을 추가하거나 기본 메소드에 호출하여 추가 데이터가 채워 져야하는 경우 해당 오류 또는 양식으로 리디렉션 할 수 있습니다. 원래 요청을 반환 URL 쿼리로 처리 할 수 ​​있어야합니다 매개 변수를 사용하면 사용자가 추가 데이터를 처리하고 나면 어디든 계속할 수 있습니다. 그런 다음 [Authorize]의 모든 용도를이 맞춤 속성으로 대체해야하지만 찾기 및 바꾸기가이를 처리해야합니다.

+0

나는 실제로 이미 내 ['Auth()] 속성을 구현했다. 그러나 다른 누군가가 개발 (또는 잊어 버렸습니다.)하면 오류를 범하는 무언가가 전 세계적으로 존재했는지를 확인하기를 바랍니다. – Jared

+0

우리는 일반적으로 보안 관점에서 조금 나아졌지만 특성을 반전시킵니다. 그렇게하면 인증이 필요한 컨트롤러에서는 지정하지 않지만 인증하지 않는 컨트롤러에서는 지정하지 않습니다. 그렇게하면 devs는 뭔가를 액세스하려고 할 때 매우 빠르게 기억하고 찾을 필요가 없습니다. – Jakub