2

いくつかのドキュメントを読んだ後、shiro プラグインの使用を開始する方法について少し曖昧です。テーブルと UI プラグインがほとんどないため、Nimble は使用しないことにしました。

独自のテーブルを使用して、ワイルドカード レルムを使用して shiro プラグインをセットアップしました。拡張性に優れているため、パーミッション ベース (ロール ベースではなく) のアクセス制御を使用する場合があります。では、その手順です。

  1. サブジェクトに許可文字列を割り当て、データベースに保存します
  2. isPermitted、hasPermission (または GSP の関連タグ) でアクセス許可を確認します。

さて、
1. フィルターを介してアクセス制御を使用するのはいつですか?
2.コントローラーに挿入されたクロージャーがあり、そこでアクションの許可を定義できますか? 各コントローラーの accessControl 静的クロージャーについてどこかで読みましたが、文書化されていないようです。
3. (何か、投稿など) の作成者だけがそれを削除できるような典型的なアクセス制御シナリオを作成するにはどうすればよいですか? 可能性の 1 つは、ユーザー ID に基づいてアクセス許可文字列を作成して永続化することです。アクセス許可を確認するには、オブジェクト (投稿) を取得し、ユーザー ID を取得して件名と比較します..少し複雑に思えます..簡単な実装はありますか?

どうもありがとう..バブ。

4

1 に答える 1

1

1 アクセス制御セキュリティ フィルタはいつ使用するのですか?

A. コントローラー アクションへのアクセスを認証済みユーザーに制限する場合は、accessControl{true} を使用します。

B. パラメータの内容に関係なく、パーミッション「${controllerName}:${actionName}」に基づいてコントローラ アクションへのアクセスを制限する場合は、accessControl() を使用します。

C. パラメーターの内容に基づいてアクションを制限したい場合、たとえば、"${name}:${id}:delete" という削除権限を持っているドメイン オブジェクトのみを削除する場合は、コントローラーで isPermitted を明示的にチェックする必要があります。

3 作成者のみのような一般的なアクセス制御シナリオを作成するにはどうすればよいですか?

投稿が作成されるときに、必要な権限をユーザーに追加します。たとえば、「post:${postId}:*」などです。このようにして、権限は任意のドメイン オブジェクトではなく、ユーザーやロールに属します。 Shiroの働き方を意図しています。ユーザーではなくファイルやディレクトリに属する​​ファイル システムのアクセス許可とは対照的です。

于 2011-04-01T13:47:16.557 に答える