4

答えは管理者ログインであり、ユーザーに管理者フラグがあるかどうかを確認すると思いますが、他の関連する質問も考えました。

非管理者と同じユーザー テーブルに管理者フラグ (attr_protected) を設定したほうがよいですか? または、管理者ユーザーテーブルが必要ですか?

管理者ユーザー用に別の Rails アプリケーションを作成する必要がありますか? 両方が同じデータベースにアクセスする必要があるため、これはやり過ぎかもしれません (セットアップが非常に面倒なことは言うまでもありません)。

他の提案はありますか?現時点では、1 つか 2 つのページを保護する必要があるだけなので、一時的な手段として HTTP 基本認証またはダイジェスト認証を調べました (保護されたコンテンツは、実際にはそれほどプライベートでも重要でもありません)。しかし...特定のアクションに対してHTTP認証を実装する方法がわかりません。ディレクトリアクセスを防ぐために実装する方法を見ただけです。

どんな方向性と議論も素晴らしいでしょう。他のスタック オーバーフロー ユーザーがこの議論から恩恵を受けると確信しています。

ありがとう!

4

3 に答える 3

5

Ryan Bates は、このトピックに関する 3 部構成の Railscasts を公開しています。

また、異なる認証技術の 3 つの Railscast があります。

于 2009-06-03T21:05:41.927 に答える
2

行政の種類によると思います。

管理者がサイトに対して持つビューが通常のユーザーのものと同じであるが、追加の権限がある場合、私は管理者フラグを使用します. (または、ニーズが拡大するにつれて、本格的な役割テーブル。) これは、誰もが同じものを見る状況ですが、管理者は、通常のユーザーがアクセスできないさまざまなアクション (削除、編集、禁止など) にアクセスできます。

管理者が必要とするビューが通常のサイトと大きく異なる場合は、同じデータベースにアクセスする完全に別の Rails アプリをお勧めします。たとえば、あなたの「管理者」が実際には、電話に出たり請求に関する質問に対処したりするヘルプ デスクの従業員である場合、データベース (およびおそらくデータを編集する方法) の完全に異なるビューを持っている可能性があります。通常のアプリケーション。

複数のサイトを持つことの欠点は、モデル (検証、関連付けなど) が同期しなくなる可能性があることです。単一のサイトを持つことの欠点は、サイトの以前は理解しやすかった部分にあらゆる種類の醜い「if-admin」コードを挿入することになる可能性があることです. どちらの問題が処理しやすいかは、要件によって異なります。

于 2009-06-03T21:07:25.403 に答える
2

この目的のためにrestful_authentication プラグインを使用しています。また、任意のコントローラーまたは任意のメソッドへのアクセスを制限するのは非常に簡単です。コントローラーの例では、次の関数を追加します。

private
def authorized?
  user.admin?
end

また

private
def authorized?
  user.admin? if update? || create?
end

私は管理者を定義しましたか?私の User モデルのメソッド。私もアップデートを作成しましたか?作成しますか?どのアクションが呼び出されたかをチェックするメソッド。restful_authentication で承認されましたか? メソッドは、コントローラーにアクセスするときに常に実行されます。

すべてを 1 つのアプリケーションと 1 つのテーブルに配置します (users と admin テーブルを作成しないでください)。既存の管理者ユーザーに対してのみこの値を設定できるようにすることで、ユーザー コントローラーで管理者フラグを保護できます。

于 2009-06-03T21:05:21.350 に答える