문제

Deadbolt 가 사용합니다.그가있는 경우 사용자를 리디렉션해야합니다 (subjectPresent).예를 들어,이 컨트롤러는 가입 페이지를 렌더링합니다.

public static Result signup() {
     return ok(signup.render())
 }
.

그러나 사용자가 이미 존재하는 경우 이미 등록 된 컨트롤러는 그를 자신의 프로필 페이지로 리디렉션해야합니다 : return ok(profilePage.render())

주석으로 어떻게 할 수 있습니까?

도움이 되었습니까?

해결책

Deadbolt는 이러한 종류의 조건부 스위칭을 위해서는 실제로는 그렇지 않지만 다음과 같은 방법으로 해킹 할 수 있습니다 :

  1. subjectPresentHandler
  2. 와 같은 뭔가라고 불리는 다른 deadbolthandler를 만듭니다.
  3. 프로필 페이지로 리디렉션하려면 SubjectPresentHandler # OnAuthFailure 메서드를 구현합니다.
  4. 가입 방법에 주석을 달기

    @SubjectNotPresent (handler= subjentPresentHandler.class)

  5. 사용자가있는 경우 인증 실패를 일으 킵니다.그러면 결과를 얻으려면 SubjectPresentHandler # OnauthFailure를 호출합니다.

    그러나 개인적으로

    라인을 따라 가입 방법 내에서 간단한 테스트를 추가하는 것을 고려합니다.
    public static Result signup() {
        Result result;
        User user = // however you normally get your user
        if (user == null) {
            result = ok(signup.render())
        } else {
            result = redirect(routes.<your profile view method>);
        }
        return result;
    }
    
    .

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