0

私は現在GWTアプリケーションを開発しており、ユーザーのアクセス許可に従ってUIを動的にレンダリングしたいと考えています。たとえば、私のアプリケーションには、製品のリストがあり、そのリストを編集する可能性があります(新しい製品の追加、削除など)。

また、読み取り専用権限を持つユーザーと書き込み権限を持つユーザーがいます。私のUIクラスで次のようなことを行うことが可能になりましたか(または実行可能ですか):

if (user.hasWritePermissions) {
  Button addButton = new Button()
}

書き込み権限のないユーザーに追加ボタンと削除ボタンが表示されないようにするには?もちろん、バックエンドにも権限チェックがありますが、ユーザーが自分が使用できるものだけを見ることができれば便利です。

それとも、GWTで他にもっと良い可能性がありますか?

4

2 に答える 2

2
  • あなたのアプローチは大丈夫です。
  • 他のJavaコードと同様に、ポリモーフィズム(EditableProductListViewやReadOnlyProductListViewなど)を利用できます。
  • 理論的には、遅延バインディングを使用してそれを行うこともできますが、これは悪いユースケースです。2つまたは3つのタイプのユーザーしかない場合は、実行可能です。次に、を使用して独自の遅延バインディングプロパティを導入できます<define-property name="role" values="readonly,readwrite" />。ただし、ここでの利点はおそらく小さいですが(ユーザーは、ダウンロードするコードブロックが数ブロック少なくなります)、順列の数は指数関数的に増加します。

もちろん、これはすべてスタイルの問題です。実際のアクセス許可チェック(すでに述べたように、もう一度言いますが)はサーバー側で実行する必要があるため、セキュリティ面で良いアプローチも悪いアプローチもありません。

于 2012-08-24T21:43:23.930 に答える
1

すべての「admin」ボタンとUI要素にCSSクラスを与えることもできます。別のCSSクラスをルートパネル(または別の祖先)に設定すると、すべての管理要素が表示されなくなります。

実行時にGWTのCSSクラスのプロパティを変更する

body.admin .onlyForAdmin{
    display:block;
}

.onlyForAdmin{
    display:none;
}

しかし、それは十分に頻繁に伝えることはできません。権限チェックはサーバー側である必要があります。(あなたが言ったように)

于 2012-08-24T21:55:17.597 に答える