ring redirect after login

response is return a body. you code is (response requri),but the param of the funtion reponse is html body,not a uri,you can use the this function

like this

(ns foo
   (:require [ring.util.response :as response]))
(def requi "/")
(-> (response/redirect requri)
    (assoc :session new-session)
    (assoc :headers {"Content-Type" "text/html"}))

ps: if you are writing a web site.the lib-noir is a good way to control the session and other.


ipaomian has the answer.

Wanted to share a nice redirect hack:

(ns foo
   (:require [ring.util.response :as response]))

(defn redirect
  "Like ring.util.response/redirect but also accepts key value pairs
   to assoc to response."
  [url & kvs]
  (let [resp (response/redirect url)] 
    (if kvs (apply assoc resp kvs) resp)))

(redirect "/" :session new-session :headers {"Content-Type" "text/html"})