Playv2.0.3:在推送到heroku之后使用SecureSocial模块路由(而不是主路由)

时间:2012-09-15 23:06:11

标签: java heroku build playframework-2.0 securesocial

我有一个相当简单的应用程序在本地工作正常,使用正确的路由,即:/ conf /路由为大多数应用程序路由,/ / module / securesocial / conf为适合该模块的路由。

但是一旦我发布到heroku,只使用了securesocial路由,所以我收到一条错误消息“Action not found for request GET /”< - 或标准路由文件中定义的任何路由。

当我尝试操纵路线时(例如创建一个综合路径文件),我在编译时会遇到很多不同的错误......

这是我的标准路线:

# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~

# Home page
GET     /                           controllers.Application.index()
GET     /foo                        controllers.Application.index()

GET     /admin                      controllers.Application.admin()

POST    /quote                      controllers.Application.addQuote()

GET     /quotes                     controllers.Application.getQuotes()

# Login page
GET     /login                      securesocial.controllers.LoginPage.login
GET     /logout                     securesocial.controllers.LoginPage.logout

# User Registration
GET     /signup                     securesocial.controllers.Registration.signUp
POST    /signup                     securesocial.controllers.Registration.handleSignUp

# Providers entry points
GET     /authenticate/:provider     securesocial.controllers.LoginPage.authenticate(provider)
POST    /authenticate/:provider     securesocial.controllers.LoginPage.authenticateByPost(provider)


# Map static resources from the /public folder to the /assets URL path
GET     /assets/*file               controllers.Assets.at(path="/public", file)

这是我的/ securesocial / conf / route文件:

# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~

# Home page
# GET     /                           controllers.Application.index

# Map static resources from the /public folder to the /assets URL path
GET     /assets/*file               controllers.Assets.at(path="/public", file)

# Login page
GET     /login                      securesocial.controllers.LoginPage.login
GET     /logout                     securesocial.controllers.LoginPage.logout

# User Registration
GET     /signup                     securesocial.controllers.Registration.signUp
POST    /signup                     securesocial.controllers.Registration.handleSignUp

GET     /authenticate/:provider     securesocial.controllers.LoginPage.authenticate(provider)
POST    /authenticate/:provider     securesocial.controllers.LoginPage.authenticateByPost(provider)

我意识到有一些重复,但我这是我用来使设置在本地工作的配置(它类似于securesocial发行版中提供的示例)...

如果你能发现我做错了什么,我肯定会受益于课程修正。

谢谢, 芯片

2 个答案:

答案 0 :(得分:0)

有一个非常简单的解决方案:将SecureSocial中的路线合并到您应用的conf/routes

答案 1 :(得分:0)

我修改了SecureSocial解决Play 2中的错误的方式,使得子模块中的路由覆盖主应用程序中的路径。

这个新版本不要求您将模块代码复制到您的应用程序中,而是将其作为可下载的依赖项。

试试这个:

  1. 从目录结构中删除模块代码。
  2. 更改Build.scala文件以包含以下依赖项:“securesocial”%“securesocial_2.9.1”%“2.0.5”。
  3. 添加新的解析器作为设置的一部分:resolvers + = Resolver.url(“SecureSocial Repository”,url(“http://securesocial.ws/repository/releases/”))(Resolver.ivyStylePatterns)。< / LI>

    这是一个如何看起来的例子:

    val appDependencies = Seq(
        //
        // your other dependencies
        // 
        "securesocial" % "securesocial_2.9.1" % "2.0.5"
    )
    val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA).settings(
      resolvers += Resolver.url("SecureSocial Repository", url("http://securesocial.ws/repository/releases/"))(Resolver.ivyStylePatterns)
    )
    

    希望它有所帮助。