diz*_*tar 6 postgresql clojure noir korma
我完全被困在哪里开始为我正在建立的Clojure网站获取登录区域(为了好玩).
我已经查看了几个资源,我将在下面发布,无情地复制/粘贴代码,而我能得到的最接近的资源是以下两种情况之一:
登录页面进行登录,但是说登录失败了,据我所知,登录匹配.
或者我得到这个错误:在multimethod' - > sql'中没有方法用于调度值:null
我不知道如何解释上述错误:这是指定我需要一个多方法,或者其指定我需要检查空?null要求根本没有意义.我不是真的在问,但是如果有人想要解释,这很好.
我通过比较原始非散列数据的结果与选择查询来测试输出,我在这个主题上经历了5个变体,使用从页面到页面调用到创建新的defpartials,多方法,defn的所有内容等
我使用的来源(不幸的是,我不能列出所有这些都是第一次发布的海报):
这个使用Clojure - > Korma - > PostgreSQL,但代码似乎不适用于多个用户?
http://www.vijaykiran.com/2012/01/17/web-application-development-with-clojure-part-2/
这个展示了如何使用Noir和PostgreSQL(是的,我正在使用Noir):https://yogthos.net:11794/blog/23-Novo + tutorial +- + part + 2
4Clojure网站,但那个使用CongoMongo:
Heroku Twitter克隆,但没有提到如何为一个人创建登录,更不用说几个.
我还从O'Reilly Press购买了Programming Clojure,但再一次,没有关于如何创建登录区域的信息.
第一次编辑:我被要求创建一个独立站点的github存储库.这包括在welcome.clj文件,只在login.clj登录区域的形式找到了工作"帐户创建"区域.
我试图得到一些与昨晚相同的错误,并且在我上传文件之前也试图让它工作.我还没有任何合理的起点,因此目前还没有开始实施.我对我提出的解决方案感到非常尴尬,因此我不想发布它们.我从概念上得到了我应该做的事情,但出于某种原因,我似乎无法翻译这一点.这是我的第一个github帐户:我的背景是Python,Scheme a'la SICP,以及我构建的一些Python + PostgreSQL营销程序.
第二次编辑: Ack!我似乎无法完成这项工作......是的,我花了20多分钟(小时)来完成这一项,所以我必须承认我还没有必要的知识来完成这,无论我看到多少来源.我提交了更新的文件以及我尝试的所有奇怪的事情,包括登录框中运行原始SQL的所有变体.我能得到的最接近的是得到它以便我没有得到任何错误,但没有证据表明某人已经登录.非常感谢您的帮助和建议.我肯定会在以后再回到这里.
我发现有几个问题。首先,在 中datapass.clj,您将创建一个没有内容的实体。我不确定科尔马如何处理这个问题。它试图将结果作为其他函数的输入进行线程化,因此我可以看到如何nil在那里引入。
其次,您需要一些东西来处理登录帖子。 (defpage ...)默认情况下仅处理 GET 请求。你需要一个单独的人defpage来处理这个帖子。沿着这些思路:
(defpage [:post "/login"] {:keys [user-name pwd]}
(if-let [user (db/find-user user)]
(if (noir.util.crypt/compare pwd (:password user))
(do
(noir.session/put! :some-key some-value)
(noir.response/redirect "/success"))
noir.response/redirect "/failed-to-login"))
(noir.response/redirect "/failed-to-login"))
Run Code Online (Sandbox Code Playgroud)
session/put!就是将数据放入会话中的方式。默认是使用内存存储。您需要添加 Ring 中间件才能使用持久会话(请参阅会话存储)。
另外,幸运的是,有人刚刚发布了 Noir 的身份验证应用程序...您可能想看一下: https: //github.com/xavi/noir-auth-app
| 归档时间: |
|
| 查看次数: |
1089 次 |
| 最近记录: |