2011-07-10 10 views
1

<cflogin>とロールを実装して、ページ全体、またはコンポーネントを制限する方法を理解しています。例:ColdFusion:役割に基づくアプリケーションオプション

<cfif IsUserInRole("Admin") OR IsUserInRole("Accounting")> 
    ...You can view this page... 
<cfelse> 
    ...You can not view this page...  
</cfif> 

しかし、ページの特定のファセットを制限するにはどうすればよいですか?たとえば、「管理者」がすべてのユーザーにグローバルメッセージを送信することが許可されていますが、そのオプションは通常の「ユーザー」には利用できません。

私はビューを使用してビュー(ページ)を操作することができます。これは通常どのように処理されますか?

答えて

6

あなたが正しいです、ページを確保し、要素を固定することは異なっています。

私の意見では、実際には、コードをロールやユーザーに結びつけるのは実際には間違ったアプローチだと思います。その代わりに、要素とページに対する権限を結び、その権限にロールを関連付けます。もちろん、ユーザーには役割が割り当てられます。

それはすべての3つ持っていることが重要です。

  1. ユーザー
  2. 役割
  3. 権限< - これはあなたが

権限がある行方不明ているものが何であるかをセキュアエレメントとページ、ロールまたはユーザーではないあなたのコードには、ユーザーや役割が何であるかを知る手がかりはありません。 ermissions。

ユーザーがログインすると、自分の役割を取得します。次に、これらのロールに割り当てられているすべての権限(文字列値のリスト)を取得します。

例えば、私が持っているかもしれませんページ:

  • 削除項目

私はそのページをコーディングするとき、私は実際にそれらのそれぞれを確保する項目

  • 表示項目
  • を追加します。同様の名前の許可文字列を持つ要素(addItem、viewItem、deleteItem)

    <cfif listContainsNoCase(session.permissions, 'addItem')> 
        <!--- code to add item ---> 
    </cfif> 
    

    (注:私はこのためのカスタムタグまたは関数を使用することをお勧めしますが、例の目的のために、上記正常に動作します)。

    このようにすれば、最大限の柔軟性と抽象性が提供されます。役割に基づいて要素を保護する場合、自分自身を制限します。

    • 新しい役割を追加するには、多くのコードを変更する必要があります。
    • ロール間で権限を変更するには、コードを変更する必要があります。

    上記のようにすると、コードベース内でセキュリティコードを変更する必要はありません。なぜなら、「addItem」権限は常に「アイテムの追加」ロジックにあるべきなのでしょうか?:)

    ここで、すべてのユーザーロールと少数の管理者権限しか持たない「マネージャ」タイプのロールを作成する必要がある場合は、単にそのロールを作成して、 editItemではなく、deleteItem)。バム!今私はのコード変更なしでユーザに割り当てるマネージャロールを持っています

    "私はこのユーザーの役割です"タイプのコードを振りかけると、自分のコードを編集して新しい役割 "マネージャー"を許可する必要があります。

    意味がありますか?企業は、彼らが何かをするために誰かの権利を与えることをどのように他を知らないことが多いので、役割を持っている権限を変更したいとき

    =)

  • +0

    ネイト、あなたは男です。私はこのアプローチが本当に好きです! – dcolumbus

    +0

    ありがとう、非常に有用なロジック.. thx男! – Houssem

    0

    物事はゆがんで行くを開始します。

    それで、マーケティングのユーザーが何らかのタスクを実行するために「更新」権限を求めているとしましょう。ビジネスの誰かが更新権限を与えられます。しかし、ITマネージャーには「更新」権限もあり、マーケティングの更新権限では許されないものにアクセスすることができます。

    私は実際にさらにステップを進んで、どの部門のユーザーがいるかに基づいて権限を持つロールを指定します。はい、その非常に複雑で非常に面倒なので、私はこの質問に私の検索で終わったそれを行うより良い方法。

    関連する問題