<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                當前防范 XSRF 的一種通用的方法,是對每一個用戶都記錄一個無法預知的 cookie 數據,然后要求所有提交的 請求(POST/PUT/DELETE)中都必須帶有這個 cookie 數據。如果此數據不匹配 ,那么這個請求就可能是被偽 造的。 beego 有內建的 XSRF 的防范機制,要使用此機制,你需要在應用配置文件中加上 enablexsrf 設定: ``` enablexsrf = true xsrfkey = 61oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o xsrfexpire = 3600 ``` 或者直接在 main 入口處這樣設置: ``` beego.EnableXSRF = true beego.XSRFKEY = "61oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o" beego.XSRFExpire = 3600 //過期時間,默認1小時 ``` 如果開啟了 XSRF,那么 beego 的 Web 應用將對所有用戶設置一個 \_xsrf 的 cookie 值(默認過期 1 小 時),如果 POST PUT DELET 請求中沒有這個 cookie 值,那么這個請求會被直接拒絕。如果你開啟了這個 機制,那么在所有被提交的表單中,你都需要加上一個域來提供這個值。你可以通過在模板中使用 專門的函數 XSRFFormHTML() 來做到這一點: 過期時間上面我們設置了全局的過期時間 beego.XSRFExpire ,但是有些時候我們也可以在控制器中修改這 個過期時間,專門針對某一類處理邏輯: ``` func (this *HomeController) Get(){ this.XSRFExpire = 7200 this.Data ["xsrfdata" ] =template.HTML(this.XSRFFormHTML()) } ``` 然后在模板中這樣設置: ~~~ <form action="/student" method="post"> ? ? ? 用戶名:<input type="text" name="username"><br> {{ .xsrfdata }} ? ? ? 年齡:<input type="text" name="age"><br> ? ? ? 住址:<input type="text" name="addr"><br> ? ? ? <input type="submit" value="提交"><br> ? </form> ~~~ 后端獲取數據并處理: ~~~ type StudentController struct { ? beego.Controller } ? func (s *StudentController) Get() { ? s.TplName = "student.html" ? s.Data["xsrfdata"]=template.HTML(s.XSRFFormHTML()) } ~~~ ~~~ type Student struct { ? Id int `form:"-"` ? ? ? ? ? ? ? ? ? ? ? Name string `form:"username"` ? Age int `form:"age"` ? Addr string `form:"addr"` ? } ? func (s *StudentController) Post() { ? student := Student{} ? ? ? ? ? ? // 這里注意,變量名不能和結構體對象名不能相同 ? if err := s.ParseForm(&student); err != nil { ? ? ? //handle error ? ? ? return ? } ? fmt.Println(student) ? fmt.Println(student.Name) ? fmt.Println(student.Age) ? fmt.Println(student.Addr) ? s.TplName = "index.tpl" } ~~~ 注意: 結構體字段后面的為structTag,這里就是映射的form表單中的name參數,也就是form表單中的name字段對應結構體中的哪個字段
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看