방금 작성한 ASP.Net MVC 3 응용 프로그램은 AccountsController
을 제외한 모든 컨트롤러에 대한 인증이 필요합니다. [Authenticate]
으로 내 컨트롤러를 모두 장식하는 대신 두 가지 사용자 지정 특성을 작성했습니다. 처음은 AuthorizationAttribute
에서 상속 받고 현재 작업이 다른 작업으로 장식되어 있는지 확인합니다 (AllowAnonymous
). 그렇지 않은 경우 폼 인증을 사용하여 현재 사용자가 인증되었는지 확인하고 그렇지 않은 경우 로그인 페이지로 리디렉션합니다.컨트롤러 테스트는 ASP.Net MVC에서 전역 필터를 무시합니까?
이것을 모든 컨트롤러에 적용하려면 GlobalFilterCollection
에 RegisterGlobalFilters
에 사용자 정의 인증 속성을 추가했습니다 (global.asax.cs
).
이 모든 것은 브라우저에서 작동하지만 MVC 인터넷 응용 프로그램과 함께 제공되는 기본 테스트를 실행하여 홈페이지의 HomeControllerTest 테스트가 통과되고 "ASP.NET MVC에 오신 것을 환영합니다."라는 메시지가 나타나면 놀랐습니다. 텍스트가 ViewBag에 있습니다. 나는이 테스트가 브라우저에서 볼 때처럼 사용자가 로그인하지 않았다면 로그인 페이지로 리다이렉트 할 때처럼 테스트가 실패 할 것으로 예상했을 것이다. 인증에 대한 내 접근법이 잘못되었거나 테스트에 무언가를 쓸 필요가 있는가? 전역 필터를 적용 하시겠습니까? 단위 테스트를 진행하면 필터가 추가되고 있음을 알 수 있지만 예상대로 적용되지 않습니다.
링크를 제공해 주셔서 감사합니다. 나는 지금 무엇을해야하는지 이해합니다. – Eifion