1

Rails は初めてで、テキスト投稿を表示するための標準 CRUD Rails アプリケーションを作成しようとしています。認証されたユーザーが投稿を編集および破棄できるようにする一方で、サイトへの訪問者は既存の投稿を表示および閲覧できるようにするブログにかなり似ています。

これを管理するための最良の方法を知りたいです。これまでのところ、最初のコントローラーには before_filter があるため、各ルートに認証が必要で、関連付けられたビューに編集/破棄/新規リンクがあるように、2 つのコントローラーを使用してきました。2 番目のコントローラーには認証フィルターがなく、ビューには投稿を編集または破棄するためのリンクがありません。

このソリューションは機能しますが、あまり DRY ではないと思います。このままだと機能が追加されてどんどん複雑になっていく気がします。これを管理するより良い方法はありますか?きっとよくある問題だと思います。

4

3 に答える 3

2

ロックダウンを試してみてください: http://stonean.com/page/lockdown

Lockdown は RubyOnRails (ver 2.x) の認可システムです。シンプルなパブリックとプライベートの構成を処理して、非常にきめ細かいアクセス制御を行うように設計されています。

于 2009-11-03T22:23:44.700 に答える
1

role_requirement を使用して、「admin」および「user」ロールを介して特定のコントローラー メソッドへのユーザー アクセスを制御します。私は手巻きライブラリを使用して、特定のユーザーが特定のデータにアクセス/操作する権限を持っていることを確認します。したがって、たとえば、特定の投稿 (#3 など) を「所有」していない場合でも、その ID を /posts/destroy/3 にドロップしようとすると、締め出されます。

于 2009-11-04T05:01:54.577 に答える
1

Ryan は、この問題 (管理者コントローラーと通常のユーザー コントローラーを持つことによる RY) とRailscast #19でのより良い解決策について話しています。

余談ですが、あなたの 2 番目のコントローラー (承認のないコントローラーbefore_filter) に update または destroy アクションがないことを願っています。ビューにリンクがない場合でも、悪意のある人がデータを台無しにするリクエストを作成する可能性があります。

于 2009-11-03T21:35:31.653 に答える