ビットごとのアクセス制御リストはアンチパターンと見なされますか? 私が取り組んでいるアプリケーションでこれを見ているので興味があります.面白いように見えますが、一般的なコンセンサスは何ですか. 私が見た欠点は、「編集者」または「管理者」を見やすくするために、どの権限 8 が何であるかを知るのが難しいことです。しかし、ビットごとのアプローチは技術レベルで機能しているようです。
3 に答える
3
収納スペースを節約し、どこでも使用できます。たとえば、「編集者」と「マネージャー」を兼任する人が 1 人いる場合に最適です。そして、パーミッション 8 が何であるかを覚えておく必要はありません。一度定義した番号を参照する名前を付けてから、心配する必要はありません。
于 2012-12-19T20:18:40.553 に答える
1
これはアンチパターンではありませんが、注意すべき重大な問題がいくつかあります。
- アクセス制御にビットフィールドを使用すると、特定のユーザーがアクセスできるオブジェクトを効率的にリストすることができなくなります。(検索
canRead = 1
は SQL で索引付けできますが、permissions & 0x40 = 0x40
できません。) - 整数には限られた数のビットがあります。31 を超える値は必要ないことを確認してください (符号ビットを使用するのは面倒です。32 ビット システムで実行する場合、PHP には 64 ビット整数がありません)。実際、動的に割り当てられるものには使用しないでください。 -組み込みのアクセス許可にのみ使用するのがおそらく最善です。
- ビットマスクは、データベース コンソールで読み取るのがはるかに困難です。
データベースで個別のTINYINT
(または同様の) フラグを多数使用する方が、おそらくはるかに優れています。値をビットフィールドにパッキングすることによるストレージの節約は、手間をかける価値があるとは思えません。
于 2012-12-19T20:23:38.190 に答える
0
公式のコンセンサスがあるかどうかはわかりませんが、何らかの巧妙な方法で文字列を使用していない場合は、特定の数値型で使用されるビット数に制限されるため、アンチパターンと見なします。
ただし、プロジェクトの範囲を十分に理解していれば、32/64 を超えることはないと確信できます。
アクセス許可の値の読みやすさは、それほど心配する必要はありません。
于 2012-12-19T20:16:22.540 に答える