2017-01-16 4 views
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あたりの返信、 として

+1

あなたが最終的にグローバル[CSRFフィルター](https://www.playframework.com/documentation/2.5.x/ScalaCsrf)を追加しましたか?もしそうなら、フォームにCSRFトークンを追加する必要があります。 '@import helper._ @form(CSRF(routes.HomeController.userPost())){' –

+0

あなたのコメントが助けになりました。私はあなたが言ったことでそれを修正することができました。あなたの助けをどうもありがとうございます – zam

+1

@zam:私は同じ問題があります。ソリューションを投稿してください。 CSRFを使用すると、別のエラー「ここにHTTPリクエストヘッダーが見つかりません」が表示されます。私はバージョン2.6.xを使用しています。 – costa

答えて

関連する問題