6
今私はきれいなコードを持っていない可能性があることを知っているが、私はちょうどうんざりなことを働かせたい。 「このページにアクセスするには認証されていません」というエラーが表示されます。未承認:このページにアクセスするには認証が必要です。 - プレーのフォームを渡すとき
私は、次のコントローラ
package controllers
import javax.inject._
import play.api._
import play.api.mvc._
import play.api.data._
import play.api.data.Forms._
import models.UserData
import models.Contact
import play.api.i18n._
/**
* This controller creates an `Action` to handle HTTP requests to the
* application's home page.
*/
@Singleton
class HomeController @Inject()(val messagesApi: MessagesApi)extends Controller with I18nSupport {
/**
* Create an Action to render an HTML page.
*
* The configuration in the `routes` file means that this method
* will be called when the application receives a `GET` request with
* a path of `/`.
*/
def index = Action { implicit request =>
Ok("Got request [" + request + "]")
}
val userForm = Form(mapping("name"->nonEmptyText, "age"->number(min=0, max=100))(UserData.apply)(UserData.unapply))
def userPost = Action {
implicit request =>
userForm.bindFromRequest.fold(
formWithErrors => {
BadRequest(views.html.user(formWithErrors))
},
userData => {
val newUser = models.UserData(userData.name, userData.age)
Redirect(routes.HomeController.home())
})
}
def home = Action { implicit request =>
Ok(views.html.index())
}
def user = Action {implicit request =>
Ok(views.html.user(userForm))
}
}
次user.scala.htmlファイル
@(userForm: Form[UserData])(implicit messages: Messages)
@helper.form(action = routes.HomeController.userPost()) {
@helper.inputText(userForm("name"), 'id -> "name", 'size -> 30)
@helper.inputText(userForm("age"))
<input type="submit" value="submit"</input>
}
と、次のroutesファイルがあります。
# Routes
# This file defines all application routes (Higher priority routes first)
# https://www.playframework.com/documentation/latest/ScalaRouting
# ~~~~
# An example controller showing a sample home page
GET / controllers.HomeController.index
# Map static resources from the /public folder to the /assets URL path
GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)
GET /home controllers.HomeController.home
GET /user controllers.HomeController.user
POST /user controllers.HomeController.userPost
は、誰かが私を得る助けてくださいUnauthorized page errorを過ぎてください。私はなぜそれが起こっているのか分かりません。私は単純なフォームを渡したいだけです。
ありがとうございます。あなたはそれが私のために働い
@helper.form(action = helper.CSRF(routes.HomeController.userPost())) {
に
@helper.form(action = routes.HomeController.userPost()) {
からあなたuser.scala.htmlで行を変更する必要が上記のアレクサンダー・Bあたりの返信、 として
あなたが最終的にグローバル[CSRFフィルター](https://www.playframework.com/documentation/2.5.x/ScalaCsrf)を追加しましたか?もしそうなら、フォームにCSRFトークンを追加する必要があります。 '@import helper._ @form(CSRF(routes.HomeController.userPost())){' –
あなたのコメントが助けになりました。私はあなたが言ったことでそれを修正することができました。あなたの助けをどうもありがとうございます – zam
@zam:私は同じ問題があります。ソリューションを投稿してください。 CSRFを使用すると、別のエラー「ここにHTTPリクエストヘッダーが見つかりません」が表示されます。私はバージョン2.6.xを使用しています。 – costa