2013-11-18 6 views
0

Я пользуюсь Deadbolt для получения разрешения. Мне нужно перенаправить пользователя, если он присутствует (subjectPresent). Например, этот контроллер делает страницу регистрации:Обработка перенаправления на определенную страницу

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

Но если пользователь уже присутствует (тогда он уже зарегистрирован) выше контроллер должен перенаправить его к странице профиля: return ok(profilePage.render())

Как сделать это с аннотацией?

ответ

2

Deadbolt не реален для такого рода условного переключения, но вы можете взломать его следующим образом:

  1. Создать другой DeadboltHandler, названное что-то вроде SubjectPresentHandler
  2. Реализуйте метод SubjectPresentHandler # onAuthFailure к перенаправление на странице профиля
  3. Аннотируйте ваш метод SIGNUP с

    @SubjectNotPresent (обработчик = SubjectPresentHandler.class)

Это вызывает сбой авторизации, если пользователь присутствует. Затем это приведет к вызову SubjectPresentHandler # onAuthFailure, чтобы получить результат.

Однако, лично я хотел бы рассмотреть добавление простой тест в методе SIGNUP вдоль линий

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; 
} 
+0

Привет Стив, спасибо за ваш ответ (и для вашего плагина). Не могли бы вы также взглянуть на этот [вопрос] (http://stackoverflow.com/questions/19978971/deadbolt-show-parts-of-template-only-for-current-logged-user)? благодаря –

Смежные вопросы