2013-07-01 3 views
2

У меня есть это в моем routes.conf файле:Play Framework - как перенаправить на страницу, сгенерированную контроллером плагина? [SecureSocial]

# SecureSocial routes 
# Login page 
GET  /login      securesocial.controllers.LoginPage.login 

И тогда у меня есть это в контроллер Scala файл

val index = SecuredAction { implicit request => 
    Redirect(routes.UserOps.watchlist) 
    // how do I go straight to /login? >| 
} 

Делать это берет меня на страницу входа в систему, которая имеет красная панель ошибок, в которой говорится: «Вы должны войти в систему, чтобы просмотреть эту страницу». Если я получаю доступ к «localhost: 9000/login», я получаю страницу входа без панели ошибок.

Обычно я делаю Redirect(routes.SomeControllerObject.ActionMethodName), но в этом случае контроллер мне нужно, чтобы получить доступ в плагин ...

Я чувствую, что я что-то довольно большой здесь не хватает ...

ответ

3

Update:

Для обратного маршрута к действию в контроллере плагина вам необходимо обеспечить правильный, полный путь к класс плагина routes.

Redirect(securesocial.controllers.routes.LoginPage.login) 

Оригинал ответа

Для обратного маршрута я не думаю, что это имеет значение, где Controller есть с Play строит, что, когда проект компилируется. Из документации:

For each controller used in the routes file, the router will generate a ‘reverse controller’ in the routes package, having the same action methods, with the same signature, but returning a play.api.mvc.Call instead of a play.api.mvc.Action .

Так это должно работать так же, как если бы LoginPage был контроллер непосредственно в приложении.

Redirect(routes.LoginPage.login); 

+0

Нет ... Я получаю ошибку компиляции: 'значение LoginPage не является членом объектных контроллеров.routes' – Meredith

+0

Я думал, что все вместе, но не думаю. Попытайтесь дать ему полный путь. 'Перенаправление (securesocial.controllers.routes.LoginPage.login)' – estmatic

+0

Хм! Больше ошибок компиляции. Я все равно получаю сообщение об ошибке «вы должны войти в систему, чтобы просмотреть эту страницу», поэтому ... ... единственный способ, которым я получил мою страницу входа, чтобы показать без красной подсказки, - перейти на «localhost» : 9000/login' напрямую. Думаю, мне нужно будет сделать какой-то http-запрос GET/login в моем действии, чтобы это произошло. – Meredith

1

Для того, для отображения сообщения вы должны иметь элемент во Flash. Когда вы нажимаете/входите в систему напрямую, нет вспышки, поэтому вы не увидите это сообщение.

Если вы хотите увидеть, что сообщение:

Redirect(securesocial.controllers.LoginPage.login).flashing(...)

+0

Я получаю ошибку компиляции ... 'перегруженное значение метода [Перенаправление] не может быть применено к (play.api.mvc.Action [play.api.mvc.AnyContent])' – Meredith

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