結構いろいろあるので(制限含めてね)、ちとしっかりと、背景込みで。
# セッションID用の暗号フォーマット & 鍵 session_crypt_config = /opt/www/conf/admin_session_crypt.conf
いきなりですが暗号configの書式参照で。MWのセッションは「わざわざ暗号化までしてるから」比較的しぶとい…と思います。
# 制限値関連 # パスワードのエラー許容回数 # default 5 pass_error_count = 5
ユーザが「何回までパスワード間違えちゃっても心広く許容してあげるか」の回数です。1とかやるとタイトすぎるので適切な値を設定してください。
一応、デフォルトは5回を想定しています。
これを0(または負の値)にすることで「何回間違えてもロックしない」ようにはできますが、力技でパスワードクラックが可能になるので、可能な限り全力でそんな設定は回避してください。
# パスワードエラーでの一時ロック時間:単位は秒 # default 3600(sec) = 1h pass_error_lock_time = 3600
上述の「pass_error_count」回数間違えると、そのアカウントは一時的にロックされます。そのロック時間をここで設定してください。
極論、ここが数分でもよいです。pass_error_countを無制限にするくらいなら、ここの時間を短くしてください。
# セッションの寿命:単位は秒 # default 600(sec) = 5min session_expire = 600
1セッションあたりの寿命です。言い方を変えると「この時間だけ無操作ならいったんセッション切るからね」な時間です。
デフォルトは結構厳しいですが、長くても数時間の前半が限界じゃないかなぁと個人的には思うのですがどんなもんなんですかね?
# session_module_loginにまつわる設定 # login_id_form_name = ログインのときにIDが入ってるformの名前 # login_pass_form_name = ログインのときにpasswordが入ってるformの名前 # login_error_return_command = ログインにしくった時の移動用コマンド名 # login_return_command = ログインに成功した時の移動用コマンド名 login_id_form_name = id login_pass_form_name = pass login_error_return_command = index login_return_command = top
session_module_login.incにあるsession_module_loginクラスを使うときに必要な設定です。
これを適切に設定すると、mapファイルに、IDとパスワードを入力するPageのコマンド設定を
login = session_module_login.inc:session_module_loginこんな風にかいておけば、あとは勝手に
を自動的に解決してくれます。
ちなみに微妙Tipsですが。認証後のPageは、base_model_authからの継承クラスにした上で、マウントポイントのメソッド名を通常のexecuteではなくexecute_authにしておくと、簡単に「ログイン後限定のPage」にできます。
# session_model_authにまつわる設定 # とはいえ一部はsession_module_loginでも使うんだけどね # auth_key_cookie = Cookieを使ってkey埋め込むならon default on # auth_key_cookie_name = Cookieにkey埋め込むときのname default s # auth_key_post = postを使ってkey埋め込むならon default off # auth_key_post_name = postにkey埋め込むときのname default s # auth_key_get = GETは基本offだよねぇ? # auth_error_return_command = 認証NGのときに遷移するコマンド名 auth_key_cookie = on auth_key_cookie_name = s auth_key_post = off auth_key_get = off auth_error_return_command = index
base_model_authで使います。…内容はコメントに書いてあるくらいで大体通じますよね?(あ、手抜き
注意点としては「auth_key_postがonのときでも別に勝手にhiddenを作ったりはしない」不親切設計なので、そのあたりはmodel側で実装よろ。…とはいえ何か対応はするかもしれないけどもしかしたら。
# セッションの寿命が迫ったときの対応方法 # 0:なにもしない(激しく非推奨 # 1:新しいセッションを作成する。古いセッションも寿命までは有効 # 2:新しいセッションを作成する。古いセッションは破棄する # 3:寿命そのものを伸ばす(非推奨 # default 1 session_expire_flg = 1
コメントそのまま。特に問題なければ1番でよいと思うです。ちなみに1~3の動くタイミングは「TTL(寿命)が半分以下になったとき」。
# ログインのときのDBのほうの場所 # とりあえずテーブル構成は「きめうち」する。session_auth_clump.inc読んで。 # ここ自由にしてもしゃぁないっしょ。 #SELECT auth_user.id FROM auth_user WHERE auth_user.id = 'cgi(id)' and auth_user.pass = 'encrypt(cgi(pass))'; # auth_clump = authテーブルのclumpクラスファイル名 : クラス名 # auth_clump_table_name = authテーブルの名前。default auth_user auth_type = 0 auth_clump = session_auth_clump.inc:session_auth_clump auth_clump_table_name = auth_admin_user session_clump_table_name = auth_admin_session
ほぼそのまんま。data_clump使ってるので、そっち系の知識が少し必要かも。
# パスワードの暗号種別 # sha-1, md5, 3des, rijndael(256), none #password_crypt_type = sha-1 | md5 | 3des | rijndael | none # default sha-1(…でいいかなぁ?) key ハッシュなのもあってdefaultはなし password_crypt_type = sha-1
パスワードハッシュの種別。とはいえ、md5とかありえないしnoneなんて呪われてしまえ。基本はsha-1。個人的には次点でrijndaelを推したいけど、そのあたりは賛否両論なので微妙。