0

大学の図書館向けのクライアントおよびサーバーアプリケーションを開発しています。すべての本の管理および貸し出し機能に加えて、アプリケーションはユーザーを管理できる必要があります。

3つの異なるユーザータイプを決定しました:

  1. ゲスト(基本情報を見ることができます)
  2. ログインしたユーザー(本の借り入れなどの基本機能にアクセス)
  3. 管理者(書籍やユーザーの管理を含むフルアクセス)

これは私の最初の大きなプロジェクトであり、多くのJava講義を読んだとしても、次の要件をモデル化する良い方法を決定することはできません*クライアント側

  • クライアントアプリケーションは、現在のログインを管理する必要があります。現在のユーザーは、基本情報を変更できます。
  • 管理者はすべての情報を変更できます

今私の問題:現在のユーザーはゲストだけかもしれませんが、すべてのユーザークラスにゲッターとセッターがありますか?情報を変更する権限なしにsetXY()が呼び出された場合はどうなりますか?コードのどこで承認が行われますか?ユーザークラス?サーバー-APIクラス?

このような既存のモデルの例またはリンクは非常に役立ちます。前もって感謝します。

4

2 に答える 2

2

1つのアプローチは、継承、つまり基本抽象UserクラスとAnonymousUser、GuestUser、およびAdminUserを使用することです。各クラスは、その親の機能を拡張します。これは単純なシナリオでは機能しますが、柔軟性がなく、後で拡張するのは特に困難です。

より良い解決策は、必要なすべての機能(前の例では〜AdminClass)を実装するUserクラスを作成し、さまざまなユーザーロールを認識し、単一のメソッドへのアクセスを制限する可能性のあるプロキシでラップすることです。

悪意のあるクライアントからの要求を防ぐことはできないため、これらのチェックは常にサーバーで実行する必要があります。

于 2012-06-02T15:32:22.910 に答える
1

ただ好奇心が強い-これは宿題ですか?実稼働環境で運用される実際の大学の実際のシステムを作成しているという意味ではありませんか?

クラス階層ではなく、役割ベースのセキュリティソリューションが必要だと思います。自分でロールするのではなく、SpringSecurityのようなものを使用することをお勧めします。

Springも使用する必要があることを付け加えておきます。それはそのアプリをより良くするでしょう。

于 2012-06-02T14:43:55.040 に答える