Redirect 登录后响铃重定向

Redirect 登录后响铃重定向,redirect,clojure,ring,Redirect,Clojure,Ring,我的原始代码是什么样的 (ns ... (:require [ring.util.response :refer [ response redirect])) 这很好,但是用户仍然需要手动导航到其他地方 试图使用 不做任何事情(除了返回空白页) 如何使用ring实现对已知uri的重定向?响应是返回一个主体。 您的代码是(response requri),但是函数response的参数是html正文,而不是uri,您可以使用 像这样 (-> (redirect requri)

我的原始代码是什么样的

(ns ...
  (:require  [ring.util.response :refer [ response redirect]))
这很好,但是用户仍然需要手动导航到其他地方

试图使用

不做任何事情(除了返回空白页)


如何使用ring实现对已知uri的重定向?

响应是返回一个主体。
您的代码是
(response requri)
,但是函数
response
的参数是html正文,而不是uri,您可以使用

像这样

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

ps:如果你正在写一个网站。这是一个控制会话和其他会话的好方法。

iPaumian有答案

想分享一个不错的重定向黑客:

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

iPaumian是对的,但是我的工作是删除标题。这是我的代码:

(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"})

我的坏朋友,在我原来的帖子里犯了一个错误。I/do/have(重定向请求URI),但它不重定向。。。只是一张空白页。谢谢你的帮助。。。将更多地查看lib noir函数末尾使用了
重定向
,因为这是一个命令,而不是一个页面。我不知道您存储的会话。如何验证登录的用户。我查看了lib noir页面,发现(转到(defn redirect…)它告诉我,我可以返回一个响应映射,其效果相同:{:status 302,:body“”:session new session,:headers{“Location”requri}——非常好用。谢谢你的帮助!能否添加一些示例代码以及输出/url栏的外观?
(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"})
(:require
    [ring.util.response :refer [redirect]])

(defn set-user! [id {session :session}]
  (-> (redirect "/home")
      (assoc :session (assoc session :user id))))