2012-03-22 3 views
1

재생중인 보안 모듈 (1.2.4 관련성이 있음)의 동작은 302 로그인 페이지로 리디렉션하는 것입니다. 이것은 대부분의 웹 페이지에 적합합니다. AJAX 호출에 사용되는 몇 가지 경로가 있습니다. 이 경우 사용자가 인증되지 않은 경우 리디렉션을 반환하지 않고 401을 반환하고 싶습니다.재생시 인증되지 않은 경우 401을 반환합니다.

인증이 실패 할 때 Play의 기능을 어떻게 사용자 정의 할 수 있습니까?

답변

1

안전한 모듈은 가장 간단한 재생 모듈 중 하나입니다. 필자는이를보다 복잡한 인증 구현을 구현할 수있는 출발점 또는 예라고 생각합니다. 그러므로, 나의 충고는 모듈의 내용을 프로젝트에 직접 복사하는 것이다. (따라서 실제 모듈 의존성을 근본적으로 제거한다.)

그런 다음 대부분의 로직은 Secure이라는 단일 컨트롤러에 있습니다. 예를 들어, 설명한 동작은 authenticate 메서드를 수정하면 쉽게 수행 할 수 있습니다. 메소드의 아래 스 니펫을 살펴보세요. 주석의 행이 저에게 추가되었습니다.

... 
if(validation.hasErrors() || !allowed) { 
    flash.keep("url"); 
    flash.error("secure.error"); 
    params.flash(); 
    // you can check if ("POST".equalsIgnoreCase(request.method)) here... 
    login(); 
} 
... 
+1

aah, nice. 나는 Play에 아주 익숙하며 모듈 코드를 복사 할 생각이 없었습니다. 내가 편집하고 싶은 것은 checkAccess 메소드이고 login()을 항상 호출하는 것은 아니라고 생각합니다. 어떤 경우에는 대신에 401을 반환하려고합니다. 감사! – nojo

관련 문제