アクションを直リン禁止にする
DBから画像データをsend_dataするような、ビューから呼び出すからpublicにしなきゃらなんけど、
外から直リンさせたくない、ような関数ってどうやって指定するのかなぁと探したんですが、
見当たらなかったので実装してみました。
def tyokurin_notallowdalbe
ref = @request.env["HTTP_REFERER"]
unless ref.to_s =~ /#{@request.host.to_s}/
flash[:notice] = "直リンできません。"
redirect_to :action=>"index"
return;
end
end
そんで
before_filter :tyokurin_notallowdalbe, :only=>:draw
してやれば、オッケーのようです。
-
-
- 2月5日追記---
-
同じようなことはActionPackに最初っからついてるhide_actionでもできるようです。
publicインスタンスメソッドをアクションとして認識しないようにするものですが、
コイツだとビューから@pict.drawのように呼び出せても、:action=>:drawのように
間接的に呼び出すのはできないっぽいです。