6

承認/認証システムをセットアップしようとしていますが、混乱しているので、いくつか質問があります。

  1. 多くのチュートリアルでは、ユーザーとロールのHABTM関係を設定します。これにより、各ユーザーが複数の役割を持つことができるようになりますが、各ユーザーに1つの役割のみを持たせたい場合、これは必要ですか?「アクティブ」ユーザーと「非アクティブ」ユーザーのオプションが必要な場合、それらはロールか何か他のものにする必要がありますか?
  2. Cancan wikiには、1人のユーザーに1つの役割を持たせたい場合は、それを属性にしてから「can:manage、:all if user.role == "admin"」を使用する必要があると書かれていますが、そうではありません。毎回「admin」は単なる文字列なので危険ですか?これは重要ですか?これに対処するためのより良い方法は何ですか?

私は関係するすべてのドキュメントを読むために最善を尽くしました、そして私はこのチュートリアルから始めました

http://railsapps.github.com/tutorial-rails-bootstrap-devise-cancan.html

http://starqle.com/articles/rails-3-authentication-and-authorization-with-devise-and-cancan-part-1/およびtonyamoyal.com/2010/09/29/railsも読んだことがありますが -authentication-with-devise-and-cancan-part-2-restful-resources-for-administrators /

私はそれを私が望むように機能させることができません。どうすればよいですか?

4

1 に答える 1

8

1.複数のロールまたはロールテーブルを作成する必要はありません

CanCanは、アプリケーションでロールを定義する方法に依存しません。ユーザーモデルにロールフィールドを簡単に含めることができます。

「アクティブ」ユーザーと「非アクティブ」ユーザーには、2つのオプションがあります。そのステータスのフィールドを設定することも、「非アクティブ」な役割を設定して他の役割を「アクティブ」と見なすこともできます。これは、「アクティブ」の意味と、アプリケーションでその情報をどのように使用しているかによって異なります。

2.ユーザーの役割を文字列に保存しても問題はありません。

ロールが文字列として保存されているという事実は、それを安全性を低下させるものではありません。ただし、ユーザーロールの一括割り当てを防ぐには、attr_protectedを使用する必要があります。

attr_protected :role

そうすれば、ユーザーは自分の役割を更新できなくなります。

于 2012-06-04T21:01:04.477 に答える