大文字で始まるメソッドの呼び出し
Module モジュールのクラス。
−−−−−−−−−−−
■ ログイン要求/判別
class HogeController
include AutheticatedSystem
before_filter :login_required
....
end
これだけである。
これで、HogeController配下のアクションでは全てログインが必要となる。
未ログイン状態でアクセスすると/account/loginにリダイレクトされ、
そこでログインすると元のアクションに戻ってくる。
−−−−−−−−−−−−
とのことだけど、
AccountController・SchedulesController・ApplicationControllerの
3つとも指定しましたが・・・全然ログインを求められません。
キャッシュでも残っているのかな?と思い、
キャッシュの消去もしてみましたが;;
ただ、http://localhost:3000/ や
http://localhost:3000/account/ などのアクセスがlogin画面になっているのは・・・・
/config/routes.rbの中で下記のように指定したからですね。
map.connect '', :controller => 'account', :action => 'login'
map.connect '/account/', :controller => 'account', :action => 'login'
map.connect '/schedules/', :controller => 'account', :action => 'login'
同じ内容を3行って・・・
ApplicationControllerでbefore_filterが効けば必要ないのかな?
● 継承時の Filter
>コントローラを継承している場合、親クラスのコントローラで定義された
>Filter が先に実行されます。
>また、Filter を評価した値(戻り値)が false である場合、
>その時点で Filter の適用は停止され、以降の Filter は実行されません。
>(これは継承とは無関係に Filter の特徴です)
うーなぜfilterがかからないのか
全然分からない・・・・なにがいけないんだぁ
● routes
同じ内容3行でも良さそう。
でも、認証させたいコントローラーが多くなったらどうするのだろう?
例えば
map.connect '/:controller/', :controller => 'account', :action => 'login'
など、色々当てずっぽうに入れて為してみましたが、
http://localhost:3000/schedules/ にアクセスすると
<エラー文> Unknown action
No action responded to login
となってしまいます。
たぶん、schedulesにloginなんてアクション無いぞ。と言われている。
どんな処理でエラーになっているか?
Processing SchedulesController#login
Parameters: {"action"=>"login", "controller"=>"schedules"}
ここが気になりますね。SchedulesControllerのloginにparamを
持っていってますね。やはり。
しかし、http://localhost:3000/account/ にアクセスすると・・・
Processing ApplicationController#index
Parameters: {}
login画面が表示されるし、ApplicationControllerにプロセスしてる!
んんーーーー? これは、actionメソッドが同じだからぽい。
Processing SchedulesController#month
Parameters: {"action"=>"month", "controller"=>"schedules"}
でも、ApplicationControllerにはプロセスしていない。
あー分からないので、とりあえず進んでいきます。
urlではaction名を指定すればログイン無しで入れます!
・・・・・・・
★明日-最終日-の課題★
1.スケジュール新規登録でファイル添付をしていないとエラーが出るのを直す
<エラー文> NoMethodError in SchedulesController#create
undefined method `original_filename' for "":String
app/controllers/schedules_controller.rb:102:in `set_file_name'
2.認証・・・
明日は、今までの振り返りプレゼンをして、
残り時間で上記の課題をやろうと思います。
0 件のコメント:
コメントを投稿