title: Unable to complete POST request in Clojure
body: <p>I have recently started exploring Clojure and I wanted to set up a simple web app with basic CRUD functionality. I found a nice tutorial here: <a href="http://www.xuan-wu.com/2013-09-21-Basic-Web-Application-in-Clojure" rel="noreferrer">http://www.xuan-wu.com/2013-09-21-Basic-Web-Application-in-Clojure</a>.</p>
  
  <p>The GET requests work fine, but whenever I attempt a post request, I get the following error:</p>
  
  <pre><code>Invalid anti-forgery token
  </code></pre>
  
  <p>The tutorial I mentioned earlier does not address anything security related. I did some digging around and it seems like I'm missing some component of Compojure that is supposed to generate a token for making POST requests. Some places mentioned that I was supposed to happen automatically without any changes on my part. I am still not sure what it is that I am missing. Here is my code:</p>
  
  <pre><code>(ns myblog.handler
      (:require [compojure.core :refer :all]
              [compojure.route :as route]
              [ring.middleware.defaults :refer [wrap-defaults site-defaults]]
              [myblog.views :as views]
              [myblog.posts :as posts]
              [ring.util.response :as resp]
              [ring.middleware.basic-authentication :refer :all]))
  
  (defn authenticated? [name pass]
    (and (= name "user")
         (= pass "pass")))
  
  (defroutes public-routes
      (GET "/" [] (views/main-page))
      (route/resources "/"))
  
  (defroutes protected-routes
      (GET "/admin" [] (views/admin-page))
      (GET "/admin/add" [] (views/add-post))
      (POST "/admin/create" [&amp; params]
          (do (posts/create params)
              (resp/redirect "/admin"))))
  
  (defroutes app-routes
      public-routes
      (wrap-basic-authentication protected-routes authenticated?)
      (route/not-found "Not Found"))
  
  (def app
    (wrap-defaults app-routes site-defaults))
  </code></pre>
  
  <p>Again, only the POST request "/admin/create" is failing with the invalid token error. Any idea what I'm doing wrong?</p>