2012-08-26 6 views
6

私がビルドしているClojureサイトのログイン領域をどこから取得するのかを完全に突き止めています。Clojure/Korma/PostgreSQLサイトのユーザーログインを作成しようとしています

私は容赦なくコピー/貼り付けコードを、私は以下の投稿しますいくつかのリソースを、見てきた、と私が得ることができる最も近いの2つの状況のいずれかである:

ログインページはログインがかかりますが、と言っていますログインは失敗しましたが、私が知る限り、ログインは一致します。

それとも、このエラーを取得する:multimethodでない方法 - 派遣値のための「> SQL」:ヌル

私は上記のエラーを解釈するかどうかはわかりません。私はマルチを必要とし、この指定があります-methodまたはnullをチェックする必要があることを指定していますか? null要件はまったく意味がありません。私は本当に尋ねているわけではありませんが、誰かが説明をしたいのであれば、それは素晴らしいことです。

生の非ハッシュデータからの結果を選択するクエリを比較して出力をテストしました。このテーマについては、ページ間の呼び出しから新しいdefpartials、multi -methods、DEFN、など私が使用している

ソース(残念ながら、私は初めてのポスターであること、それらのすべてを一覧表示することはできません):

この1つはClojureのを使用しています - >コルマ - > PostgreSQLのが、コードは複数のユーザーのために動作していないようですか?
http://www.vijaykiran.com/2012/01/17/web-application-development-with-clojure-part-2/

この1つは(はい、私はノワールを使用しています)ノワールとPostgreSQLを使用する方法を示しています。4Clojureサイト https://yogthos.net:11794/blog/23-Noir+tutorial+-+part+2

が、1つはCongoMongoを使用しています:

HerokuのTwitterのクローンを、 1人のログインを作成する方法については言及していません。

また、O'Reilly PressからProgramming Clojureを購入しましたが、もう一度、ログイン領域を作成する方法については何も教えていません。

FIRST EDIT:スタンドアロンサイトのgithubリポジトリを作成するように求められました。これには、「welcome.clj」ファイルにある「Account Creation」領域と、login.cljの「Login」領域のフォームのみが含まれます。

私は昨夜と同じようにいくつかのエラーを処理しようとしていましたが、ファイルをアップロードする前にこれを取得しようとしました。私はまだ合理的な出発点がないので、まだ開始されていません。私は思いついた解決策に真剣に恥ずかしいので、私はそれらを投稿したくありません。私は何をすべきかを概念的に理解していますが、何らかの理由でこれを翻訳しているようには見えません。これは私の最初のgithubアカウントです:私の背景はPython、Scheme a'la SICP、Python + PostgreSQLのマーケティングプログラムです。

SECOND EDIT: Ack!私はそのことをまったく動かすことができないようです...はい、私はこの時間に20分以上を費やしました。だから私はまだ達成するために必要な知識を持っていないと認めなければなりませんこれは、私がどのように多くのソースを見ても関係ありません。私は更新されたファイルと、試したすべての奇妙なことをコミットしました。私が一番近いのは、エラーを出さないようにすることですが、誰かがログインしているという証拠はありません。助けや提案に感謝します。私は後でこれに後で戻ってきます。

https://github.com/dt1/noirKormaLogin

+0

それはあなたのコードを見ずには不可能であろう。おそらくコードをgithubに置いて、ここにリンクを張ることができます。 – Ankur

+0

本当に自分でログインを実装する必要がありますか?コンテナ内でJSSE認証を使用することを検討してください(コンテナ内で実行していることを前提としています)、またはSASLを使用してください。他の人があなたのためにパスワードジャグリングを処理し、ちょうどコンテナから認証された資格情報を受け入れるようにしてください。 –

+3

また、パスワードを保存している場合は、適切に塩漬けされたハッシュであることを確認してください。暗号化されていないプレーンテキストのパスワードを保存しないでください。できるだけ暗号化されたパスワードを保存しない場合、ユーザーが正しいパスワードを知っていることを確認するために使用できる塩漬けのハッシュだけです。 –

答えて

3

私が見る問題がいくつかあります。まず、datapass.cljでは、コンテンツのないエンティティを作成しています。私はKormaがそれをどのように処理するのか分かりません。結果を他の関数への入力としてスレッド化しようとしているので、nilがそこにどのように導入されるのか分かりました。

第2に、ログインポストを処理するために何か必要があります。 (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")) 

session/put!あなたがセッションにデータを置く方法です。デフォルトでは、メモリ内ストアを使用します。 persistent sessions(セッションストアを参照)を使用するには、リングミドルウェアを追加する必要があります。運は、誰かがちょうどノワールの認証アプリを掲載しているだろうと

また、...あなたが見てみたいことがあります。https://github.com/xavi/noir-auth-app

関連する問題