2

1 つの Java Swing アプリケーションを Web に移植する準備をしています。アプリケーションはマルチビジネス アプリケーションであるため、ビジネスごとに少なくとも 1 人の管理者になり、この管理者はビジネスのユーザーに (モジュールごとに) 特権を付与できます。

言い換えれば、アカウント、顧客、請求書のモジュールがあり、読み取りと書き込みの権限があります。ビジネス A には、John、Mike、Mary の 3 人のユーザーがいます。

John は管理者で、Mike には Customers と Invoices への読み取りと書き込みのアクセス権を付与しますが、Accounts へのアクセス権は付与しません。Mary には Accounts への読み取りと書き込みアクセス権を付与し、Invoices への読み取りアクセス権を付与し、Customers へのアクセス権は付与しません。

私の質問は、Play Framework または Grails でこれを行うためのモジュール/プラグインはありますか? そうでない場合、どうすればこれを行うことができますか?

4

1 に答える 1

2

Grailsには、 SpringSecurityShiroの両方のプラグインがあります

Spring Securityを使用すると、実行時にロールを作成し、実行時にユーザーをロールに追加できます。

これを行うためのGUIを提供するspring-security-uiというプラグインがありますが、ジョンが自分以外のビジネスへのアクセスを許可したくないため、ユースケースに適合しないと思います。Spring-security-uiは、よりスーパー管理者のGUIです。ただし、アクセスを許可するための独自のユーザーインターフェイスを簡単に作成できるはずです。

3つの役割が必要かどうかを決定する必要があります。ROLE_ADMIN、ROLE_READ、およびROLE_WRITEを追加し、ユーザーが自分のビジネスにアクセスしようとしていることを確認するためのチェック(フィルターなど)を追加します。または、ビジネスごとに3つの役割、つまりROLE_BUSINESS1_ADMIN、ROLE_BUSINESS2_ADMINなどを動的に追加する場合。

役割を動的に追加するには:

String roleName = ...
def role = Role.findByAuthority(roleName) ?: new Role(authority: roleName).save()

ユーザーに役割を追加するには:

PersonRole.create user, role, true

(上記の例では、ドメインオブジェクトはPerson and Roleと呼ばれていますが、他の名前を使用することもできます)

アクセスルールをURLに動的に追加するには、データベースに保存されているRequestmapインスタンスを使用する必要があります。または、プログラムでアクセスを確認することもできます。SpringSecurityUtils.ifAnyGranted(roles)

シロの経験はありませんが、同じことができると思います。

于 2012-04-05T17:45:55.763 に答える