Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure-OpenID-Luminus-Steam集成_Clojure_Openid_Steam_Luminus - Fatal编程技术网

Clojure-OpenID-Luminus-Steam集成

Clojure-OpenID-Luminus-Steam集成,clojure,openid,steam,luminus,Clojure,Openid,Steam,Luminus,我是Clojure的新手,使用Luminus建立了一个网站,我一直在尝试将OpenID集成到我的网站上,但我失败了。我有一个代码示例: 演示: 我试图在我的站点上实现它,但我不断地出错,最后我只想复制它,看看它是否在我的本地主机上工作。所以我的家里有这个代码 但它就是不起作用,每当我点击登录按钮,我就会在localhost:3000/Login上看到“找不到” 这是否意味着我需要处理/登录一些?但是上面的示例代码中没有记录它 (def providers [{:name "Steam" :ur

我是Clojure的新手,使用Luminus建立了一个网站,我一直在尝试将OpenID集成到我的网站上,但我失败了。我有一个代码示例:

演示:

我试图在我的站点上实现它,但我不断地出错,最后我只想复制它,看看它是否在我的本地主机上工作。所以我的家里有这个代码

但它就是不起作用,每当我点击登录按钮,我就会在localhost:3000/Login上看到“找不到”

这是否意味着我需要处理/登录一些?但是上面的示例代码中没有记录它

(def providers [{:name "Steam" :url "http://steamcommunity.com/openid"}
{:name "Yahoo" :url "http://me.yahoo.com/"}])

(defroutes home-routes
(GET "/" req
(h/html5
  pretty-head
  (pretty-body
   ; (github-link req)
   [:h2 "Authenticating with various services using OpenID"]
   [:h3 "Current Status " [:small "(this will change when you log in/out)"]]
   (if-let [auth (friend/current-authentication req)]
    [:p "Some information delivered by your OpenID provider:"
    [:ul (for [[k v] auth
      :let [[k v] (if (= :identity k)
        ["Your OpenID identity" (str (subs v 0 (* (count v) 2/3)) "…")]
        [k v])]]
      [:li [:strong (str (name k) ": ")] v])]]
    [:div
    [:h3 "Login with…"]
    (for [{:keys [name url]} providers
     :let [base-login-url (context-uri req (str "/login?identifier=" url))
     dom-id (str (gensym))]]
     [:form {:method "POST" :action (context-uri req "login")
     :onsubmit (when (.contains ^String url "username")
       (format "var input = document.getElementById(%s); input.value = input.value.replace('username', prompt('What is your %s username?')); return true;"
         (str \' dom-id \') name))}
     [:input {:type "hidden" :name "identifier" :value url :id dom-id}]
     [:input {:type "submit" :class "button" :value name}]])
    [:p "…or, with a user-provided OpenID URL:"]
    [:form {:method "POST" :action (context-uri req "login")}
    [:input {:type "text" :name "identifier" :style "width:250px;"}]
    [:input {:type "submit" :class "button" :value "Login"}]]])
   [:h3 "Logging out"]
   [:p [:a {:href (context-uri req "logout")} "Click here to log out"] "."])))
(GET "/logout" req 
(friend/logout* (resp/redirect (str (:context req) "/")))))

(def page (friend/authenticate
home-routes
{:allow-anon? true
:default-landing-uri "/"
:workflows [(openid/workflow
:openid-uri "/login"
:credential-fn identity)]}))

/login
回调由
openid工作流
处理,该工作流实质上成为
主路由的包装。当您应该使用
页面
时,您可能会使用
主路由
作为请求处理程序。

openid工作流
处理
登录
回调,它实质上是围绕
主路由
的包装。当您应该使用
页面
时,您可能会使用
主路由
作为请求处理程序