2

私はこれを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)が、この場合、アクセスする必要があるコントローラーはプラグインにあります...

ここでかなり大きな何かが欠けているような気がします...

4

2 に答える 2

3

アップデート:

routesプラグイン コントローラーのアクションに逆ルーティングするには、プラグインのクラスへの正しいフル パスを指定する必要があります。

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

元の回答

Controller逆ルーティングについては、プロジェクトのコンパイル時に Play がそれを構築しているので、 がどこにあるかは問題ではないと思います。ドキュメントから:

ルートファイルで使用される各コントローラーに対して、ルーターはroutesパッケージ内に「リバースコントローラー」を生成します。これは、同じアクションメソッドと同じ署名を持ちますplay.api.mvc.Callが、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 に答える