2

我的 routes.conf 文件中有这个:

# 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)但在这种情况下,我需要访问的控制器位于插件中......

我觉得我在这里错过了一些相当大的东西......

4

2 回答 2

3

更新:

要反向路由到插件控制器中的操作,您需要提供插件routes类的正确完整路径。

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

原始答案

对于反向路由,我认为它在哪里并不重要,Controller因为 Play 在项目编译时构建它。从文档中:

对于路由文件中使用的每个控制器,路由器将在routes包中生成一个“反向控制器”,具有相同的操作方法,具有相同的签名,但返回 aplay.api.mvc.Call而不是 a play.api.mvc.Action

所以这应该就像LoginPage直接在您的应用程序中的控制器一样工作。

Redirect(routes.LoginPage.login);

于 2013-07-02T20:17:46.517 回答
1

为了显示消息,您必须在 Flash 中有一个项目。当您直接点击 /login 时,没有闪烁,因此您不会看到该消息。

如果您想查看该消息:

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

于 2013-07-01T22:14:46.350 回答