2011-09-19 18 views
0

これは非常に簡単です。私は非常によくレールを知らない。Rails 3:IDへのアクセスを制限する方法

link_toを使用して適切なページにハイパーリンクを誘導する私のroutes.rbにmatch myController/myAction/myIDがあります。しかしここに問題があります:人々が自由にURLを介して渡して、idパラメータを自由に変更できるようにしたくありません。

おそらくlink_toメソッドへのルートへのアクセスを制限する方法はありますか?あるいは、隠された変数のparamや何かを渡して、これについて別の方法がありますか?

答えて

2

ユーザーは次のようなURLであなたのサイトにアクセスします:/ controller/action /:id right?ユーザーはIDを変更することができ、承認されていない別のリソースを表示してはなりません。どのようにこれを達成するには、あなたのコントローラ上で、ユーザーがアクセスを許可されているリソースだけを返します。例えば

、あなたがdeviseを使用していることとします

class AController < ApplicationController 

    def index 
    @resouces = current_user.find_all_by_id params[:id] 
    end 
end 

この方法で、ユーザは自分がアクセス権を持っていない何かをアクセスしようとすると、彼はエラーになります。

希望があれば、私に知らせてください、私は詳しく説明しようとします。

についてCURRENT_USERは、はい、それは現在ログインしているユーザーことになっている、それは工夫である必要はありません、あなたはあなた自身のセッション処理ロジックを実装して、取得するために、ヘルパーメソッドを作成することができます現在ログインしているユーザーあなたがあなた自身のセッション処理ロジックを実装したくない場合は、を工夫使用について

、あなたのような機能をしたい場合はプラス:

  • は私に
  • すでに作成されたビューを思い出すことができます完全にカスタマイズする
  • 認証
  • 承認
  • パスワード暗号化
  • 工夫その後

(詳細についてはdocsを見てください)、より多くのは、行くには良い方法です。

また、可能であれば、学習の練習として、自分の認証と承認のレイヤーを実装することは、常にお勧めです。後悔はありません。

敬具

エマニュエル・デルガド

+0

あなたが工夫使用しての値に文章や2を追加することができます。 deviseがまったく使用されていないように見せたコード。 – mliebelt

+0

彼はcurrent_userを使用して、current_userリソースのみを取得しています。 – cicloon

+0

私の元の投稿にいくつかのメモを追加しました。私がさらに精巧にしてほしい場合はお知らせください。宜しくお願いします。 ED。 – chischaschos

関連する問題