2017-01-16 8 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 
# 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 

किसी की मदद कृपया मुझे मिल अनधिकृत पृष्ठ त्रुटि पिछले। मुझे नहीं पता कि यह क्यों आ रहा है। मैं बस एक साधारण रूप से गुजरना चाहता हूं।

धन्यवाद।

+1

आपको धीरे-धीरे एक वैश्विक [CSRF फिल्टर] जोड़ दिया (https://www.playframework.com/documentation/2.5.x/ScalaCsrf)? यदि ऐसा है तो आपको अपने फॉर्म में सीएसआरएफ टोकन भी जोड़ना होगा: '@import helper._ @form (सीएसआरएफ (मार्ग। होमकंट्रोलर.यूसरपोस्ट())) {' –

+0

आपकी टिप्पणी में मदद मिली। मैंने जो कहा आपने उसे ठीक करने में कामयाब रहे। आपकी मदद के लिए बहुत बहुत धन्यवाद – zam

+1

@zam: मेरे पास एक ही समस्या है। क्या आप अपना समाधान पोस्ट कर सकते हैं? जब मैं सीएसआरएफ का उपयोग करता हूं तो मुझे एक और त्रुटि मिलती है 'यहां कोई HTTP अनुरोध शीर्षलेख नहीं मिल रहा है'। मैं संस्करण 2.6.x का उपयोग कर रहा हूँ। – costa

उत्तर

2

ऊपर अलेक्जेंडर बी जबाब, आप

@helper.form(action = helper.CSRF(routes.HomeController.userPost())) { 

यह मेरे लिए काम किया

@helper.form(action = routes.HomeController.userPost()) { 

से अपने user.scala.html में लाइन बदलने की जरूरत के अनुसार।

CSRF एंड प्ले के बारे में: https://www.playframework.com/documentation/2.6.x/ScalaCsrf

संबंधित मुद्दे

 संबंधित मुद्दे