내가 Playframework 2.1데드 볼트 - 액세스 실패 리디렉션
나는 액션 버튼과 컨트롤러 방법에 사용자가 클릭이 호출 곳에서 공개 페이지가와 데드 볼트 (2)를 사용하고 작동하지 않습니다,이 방법에 @SubjectPresent있다 그것. 사용자가 로그인하지 않은 경우 로그인 페이지로 리디렉션하고 사용자가 로그인 한 후에 메서드 호출을 실행하려고합니다.
나는 내가 여기에 프로젝트 샘플을 기반으로 설치 데드 2를
function launchDemo(demoId){
jsRoutes.controllers.DemoLaunchApplication.launchDemo(demoId).ajax({
success: function(data, textStatus) {
$("#result").html(data);
},
error: function(data) {
alert("error");
$("#result").html(data);
}
})
}
다음과 같이 jsroutes를 통해 컨트롤러 메서드를 호출합니다. (https://github.com/joscha/play-authenticate/tree/master/samples/java/play-authenticate-usage)
내가 콘솔에서 다음과 같은 오류를 얻을.
[error] application - Access to [/test/launch?testId=2] requires a subject, but no subject is present.
[warn] application - Deadbolt: Access failure on [/test/launch?testId=2]
이고 결과 div에는 로그인 페이지가 표시됩니다. 대신 로그인 페이지로 리디렉션하고 로그인 후에 메소드 호출을 실행하려고합니다.
statusCode 및 ajaxError를 추가하려고 시도했지만 응답 헤더 상태가 200이고 성공 div가 실행될 때마다 결과 div에 로그인 양식이 표시됩니다.
스티브, 나는 금지 된 것을 주석 처리했으며 리디렉션하도록 설정했습니다. // return forbidden ("Forbidden"); return redirect (PlayAuthenticate.getResolver(). login()); –
로그인 페이지에 대한 액세스를 제한하지 않았습니까? –
로그인 페이지에 대한 액세스를 제한하지 않았습니다. 정상적인 요청 (예 : http : // localhost : 9000/project)을 받으면 페이지가 http : // localhost : 9000/login으로 리디렉션됩니다. 위의 메소드에서 ajax 호출은 내부적으로 HTTP 상태 303으로 리디렉션 된 HTTP POST http : // localhost : 9000/launch/demo? id = 1을 생성 한 다음 로그인 페이지 HTML 내용이 데이터로 반환됩니다. –