0

menu storedタイトルにあるように、の中にツリーとしてダイナミックを作成する必要がありdatabase、それにインターフェイスを配置する計画があります。次にAccess Control Layer、この要件に適した市場にあるものに基づいて、実装方法を決定する必要があります。

私は自分のプロジェクトSpring IoCspring mvcなどを多用しています。hibernate私はapache shiro以前に使用したことがありますが、悪くはありません。コミュニティがまだ若いので、shiroに関する質問に貢献するのに時間がかかり、広範なドキュメントがありません。

私はまだshiro経験がないので、とにかく使用することを計画していました。今spring security、最初の質問は、ACLをメニューシステム|ナビゲーションシステムに結び付けるのは良い考えです。誰かができれば幸いです。それに関する彼の経験を共有してください。

だから私の頭の上に私はこのモデルを念頭に置いてusersいます、、、、、、rolesrightsusers_rightsroles_usersroles_rights

users //contains creds and user detail
roles //contains roles
rights // contains rights (including menu entries matching rights, if i have to tie them)
roles_users //many-to-many roles-users with extra columns mapped as entity
roles_rights // many-to-many roles-rights with extra columns mapped as entity

users_rights //many-to-many users-rights mapped as entity with extra columns. special rights for user and overwrite the overall rights given by roles. can deny rights given by a role or add rights not inside any roles 

したがって、権利テーブルでは、次のようになります。

  id
  name // in the form of admin:users:list
  description
  menu_name // unique name what shows on page
  menu_url 

唯一の質問は、サブメニューをどのように処理するかということです。自己多対多の権利-権利?結局、それはすべてとても複雑になります。それで、私は他の視点、洞察、提案が欲しいです。ありがとう

4

1 に答える 1

1

あなたが何を望んでいるのか理解できたと思います。
自己外部キーの使用は有効だと思います。
ただし、サブメニューの作成時または親の更新時にサブメニューの「ACL 値」を計算することをお勧めします。その
ため、サブメニューの ACL チェック中に計算に時間を費やすことはありません。
用語を正しく使用していない場合は申し訳ありません
。一般に、ツリーに何らかの値があり、この値がツリーの親ノードの値に依存している可能性がある場合は、次の
ことを考慮する必要があります。先祖の 1 つで挿入、更新、または変更中に子ノード/リーフの値を計算します。

于 2012-09-15T17:00:44.280 に答える