Acts as authenticated 体験記 その3【画面表示を見てみる】
その1【取り敢えずインストール】
その2【必要ファイルを自動生成】
その3【画面表示を見てみる】
その4【日本語化をしてみる】
その5【ログイン許可・不許可】
その6【まとめ】
画面はデフォルトの状態ではどうなっとんのよ、と早速アクセスすることにしました。
# script/server
http://localhost:3000/account
まあ、なんで account という URI を指定するか、というと言わずとしれたコントローラ名が account だからです。
言い換えると、app/controllers/account_controller.rb というファイルがあるからです。と、また先生口調になってみる。
それにアクセスしたら、突然 URL が http://localhost:3000/account/signup になりました。

どうやらリダイレクトされた模様。config/routes.rb ファイルは特にいぢられてないようなので、コントローラ内で何かのリダイレクトが走ったと考えられます。
http://localhost:3000/account にアクセスすると、ror の機能で、コントローラの index メソッドが呼ばれることになっています。
app/controllers/account_controller.rb から抜粋
def index
redirect_to(:action => 'signup') unless logged_in? || User.count > 0
end
今、users テーブルには誰も登録されていませんから、signup にリダイレクトされるという訳なのですね。
と、解説がいちいち詳しすぎる?
でもいいのです、今回はだらーんと力を抜いてやってます。
じゃあ、この画面でユーザを新規登録してみようっと。
最初はわざと間違えて、2つめの確認用パスワードを1つめのパスワードと違うのを入れます。
と、案の定エラーメッセージがでました。

そこで、今度は2つのパスワードを一緒のモノを入れます。

そして、submit ボタンを押します。えいっ。

わぁ、訳分からん詩が表示されました。一瞬 LAN 内クラッキングでも起きたのかと思いました。
詩は、韻を踏んであって、ちょっといい感じです。Woman ... のくだりは切ないですね。
などと、話が横道にそれてしまうのでした。
users テーブルにも、今登録したデータが入っているようですし、このパスワードは暗号化されて DB へ保存されますね。強度とかは、いかほどに?
さて、強度の話は分からずじまいにしておいて、他にどんなアクションがあるのか見ていきます。
今までは、index と signup アクションを見ました。
account_controller には、その他に、login アクションと logout アクションが定義されています。
login アクションは、ログイン画面を表示、logout アクションは、ログアウトしてから index アクションにリダイレクトしています。
ほうほう、これで道具はそろったという訳ですな。
と思ったら、account_controller にこういうコメントとコードが書いてありました。
# Be sure to include AuthenticationSystem in Application Controller instead
include AuthenticatedSystem
# If you want "remember me" functionality, add this before_filter to Application Controller
before_filter :login_from_cookie
キャー、application controller にカット&ペーストしろよ、と強要しています。
remember me 機能も、一応使う、という方向にしておくということで、こちらも application controller にカット&ペーストします。
というわけで、以上の 4 行を、app/controllers/account_controller.rb から、app/controllers/application.rb にカット&ペーストします。
ちなみに、application.rb つーのは、コントローラ全てに共通した処理を行うためのスーパーコントローラみたいなものです。
app/controllers/application.rb
class ApplicationController < ActionController::Base
# Pick a unique cookie name to distinguish our session data from others'
session :session_key => '_MyLogAuth_session_id'
# Be sure to include AuthenticationSystem in Application Controller instead
include AuthenticatedSystem
# If you want "remember me" functionality, add this before_filter to Application Controller
before_filter :login_from_cookieend
end
これで落ち着きました。ハァ。
次回は、日本語化でもがんばってやってみるか!と考えています。
【広告】