Play Framework - 如何重定向到插件控制器生成的页面? [SecureSocial]

时间:2013-07-01 20:05:53

标签: http scala playframework-2.0 url-routing securesocial

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

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

然后我在Scala Controller文件中有这个

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

执行此操作会将我带到一个登录页面,该页面上有一个红色错误栏,上面写着“您必须登录才能查看此页面”。如果我访问`localhost:9000 / login',我会得到没有错误栏的登录页面。

通常我做Redirect(routes.SomeControllerObject.ActionMethodName)但在这种情况下我需要访问的控制器是插件...

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

2 个答案:

答案 0 :(得分:3)

<强>更新

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

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

原始答案

对于反向路由,我认为Controller的位置并不重要,因为Play正在构建项目编译时。来自文档:

  

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

所以这应该就像Redirect(routes.LoginPage.login); 直接在您的应用中作为控制器一样。

{{1}}

<击>

答案 1 :(得分:1)

要显示消息,您必须在Flash中有一个项目。当您直接点击/登录时,没有闪光灯,因此您将看不到该消息。

如果您想看到该消息:

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