Railsのセッション管理とかformとかを断章的にログイン⇔ログアウトの処理の基本的なところが一通り理解しきれたのでここで一旦まとメモ。セッションとかformデータの送信とか本当にPHPのときの反復が如くやる必要があったよ・・・。セッション管理はまぁどうせログイン後の値の保持だけだから悩むところではないにしろ、Rails独特のformの書き方は少し戸惑った。セッションの基本から。俺はかーなーりつyRailsのセッション管理は全部Cookieになっているということ。Railsの場合はDBベースで使用するには、「別途でgemいれや」だってさ。PHP5.4とかだったら備え付けにMysqlSessionHandlerあるから、チュートリアルの最初からいきなりDBベースのセッション管理できるのにな。なんか腑に落ちないけどどうせ開発環境だし、DBベース云々ってのは後の後回し。セッション(Cookie)を保存・破棄して画面に遷移するところからはじめてみようということで。ログイン時はフォームから送信されたデータを元にしてログイン(ログイン画面→ユーザー管理画面)、ユーザー画面からのログアウト時はパラメータ付きのリンクを踏んだら変身一発ログアウト(ユーザー管理画面→ログイン画面)、そういう動作をそれぞれ想定する。ログイン時には下記みたいな感じでCookieでセッションを保存してログイン後の画面に遷移させる。end~~~endメモなのでもっと簡潔に書きたかった・・・orzでも、流石にセッション入れて~、遷移して~だけを書いておいても、あとあとどこで何を入れたか忘れたらヤだし。上記の6行目がセッションを保存しているところ。session[‘user’]がPHPでいうところの$_SESSION[‘user’]。スーパーグローバル変数。7行目のredirect_toのところはログイン後の遷移画面の指定。あ、returnはおまじないね。ログアウト時のセッションの破棄と画面遷移は下記のような感じになる。end~~~endPHPだったら同じことするときは文字通り破棄したいのでunset()してるところだが、Railsではnil(=null)を代入する感じで大丈夫みたいだ。セッションを空にした後は上記だとログイン画面に戻すようにしているが、これを抜いて「ログアウトしました」的な画面を表示させてもいい。あとはログイン後の画面(userのHTMLテンプレート)に、ログアウト用のリンクとして以下を設置。href=”users/logout”>ログアウト</a>」ってのが設置される。これで、ログイン後からの一連の処理の部分は作ったのでいよいよform。Railsデフォルトのフォームについては色々ワケワケメだったので生で書くかと血迷ったけど、今のうちにこの書式に慣れておかないと後々苦労するような気がしたので頑張ってコマネチしました。ログイン用画面(loginメソッドに対応するHTMLテンプレート)はこんな感じで書く。Railsのリファレンスを見て、form_forの書式を@userのところをそのまま@loginにすげ替えてやってみました。action=”users/login”>」を指定しているってのはわかる。form_forの後の@loginってなんぞや???第一引数のモデルオブジェクトってなんのことぞや。勝手に入るんやないか?というPGの初心者的にありがちな思考が久しぶりに出てきた。@がついてるからメソッド内の変数ってのは少し考えればわかることだろうにさwwwテーブルを直接参照させるのかと思って「:users」とかやってみたり、モデルをそのままぶち込めるんじゃねぇかと「User」を入れてみたりな。結果的にはusersテーブルのモデルであるUserのことを指し示していた。コントローラーのloginメソッドへ追記。end~~~endはい。この@loginってのは、要はメソッド内変数にモデルの形態を写してこいってことだったんですね。́・ω・`)で、まぁこの一癖あるform_forってのは便利なもんで、モデルに対応したテーブルをベースにinputのフィールドを作れる。:password」は@loginで写してきたUserモデルのカラムの書式を反映している様子。name=”user[user_id]”みたいに指定されているような気が・・・。・・・ま、まぁ大丈夫だよね!!最悪、form_tagなんてもんもあるし。こんな感じが一連のベース。した内容だけど、どうせ断章的なもんだからいいや。あとはコントローラーのloginにログイン後のアクセスがあった際にセッションが残っている時はコントローラーのuserに飛ばしたり、「ユーザーがいねーよ」とか「パスワードちげーよ」的なことを出力したりするためにレスポンスを取ったりとかいろいろ書き足す形になる。Cookieのみでやるとかやっぱり実用性ねーな。Cookieはザオリクしたりできるのでセキュリティ的にやばい。次はこのCookieの処理を外部gem使ってDB管理することかぁ・・・。カテゴリRuby/Railsこの記事のコメントコメントはないです。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。