Kahua6 ユーザ認証
ずいぶんたったけど、そろそろKahua復活したいので思い出すためにも復活
http://d.hatena.ne.jp/longicorn/20100405#p1
まず事前準備としてユーザを作成しておきます。
$ kahua-admin -S ../site spvr> lsuser () spvr> adduser username hogehoge done spvr> lsuser ("username")
早速コードです。
;;ログイン入力フォーム (define-entry (login) (define check (entry-lambda (:keyword loginname pass) (if (kahua-login loginname pass) (show-page "ログイン完了") (show-page "ログインエラー") ))) (define (input-form) (kahua:xml-template->sxml page-template :title (title/ (@/ (id "title")) "appname") :body (div/ (@/ (id "body")) (form/cont/ (@@/ (cont check)) (label/ (@/ (id "loginname-text") (for "loginname-text")) "ユーザ名") (input/ (@/ (id "loginname-input") (type "text") (size 20) (name "loginname"))) (br/) (label/ (@/ (id "pass-text") (for "pass-text")) "パスワード") (input/ (@/ (id "pass-input") (type "password") (size 20) (name "pass"))) (br/) (input/ (@/ (id "button") (type "submit") (name "submit") (value "ログイン"))) ) ))) (input-form) )
上記が出来たらkahua-spvrを立ち上げ、localhostのloginにアクセスします。
labe/のidとかは各自適当に設定してください。
check関数が今回の肝です。
ログインネームとパスワードをinput-formで取得し、check関数で実際にユーザが存在するかチェックしています。
check関数は継続エントリーなので外部からはアクセス出来ないので安全です。
kahua-loginが実際にログインを行う関数で、ログインできなかったらエラーなので、エラーと表示します。
実際にはkahua-loginの後の処理が不完全なので、成功したらトップページに移動、失敗したら再度入力画面に戻るなどの処理が必要です。
次はDB関係で、基礎が終了といった所かな。
その後は、実際に作っていて困ったこととかを書いていくつもりです。
例えば、今回でてきた自動に別のページに移動するリダイレクト処理とか。