0

コンピュータ ラボ管理システム用のアプリケーションを開発しています。これが私の課題です。私は SQL Server を使用して SQL スクリプトを作成し、データベースを管理しています。NetBeans を使用して Java ソース コードを記述し、JDBC を介して SQL Server とやり取りしています。

アプリケーションの各メソッドに役割を果たし、権限を設定したいと考えています。例: 管理者はユーザーを表示/追加/編集/削除できます。ユーザーはレコードの表示のみを実行できます。

void view()、add()、edit()、remove は管理者が使用できます。ただし、void view() はユーザーのみが使用でき、ユーザーは add()、edit() のメソッドを使用できません。検索してみたり、本を読んだり、記事を探したりしましたが、... 記事が見つかりませんでした。

お読みいただきありがとうございます。

4

2 に答える 2

1

管理者、ユーザーなどは明示的なユーザーではなくロールであるため、ロールパターンを使用することをお勧めします。ここに少し例があります:

class User{
UserRole role;
//other user concerning stuff
}  

abstract class UserRole{
//eg. every User has at least the View Permission    
abstract void view();
//If the view() Operation should behave the way for every role, implement it right here
}

class AdminRole extends UserRole{
   public void add(){}
   public void view(){}
   public void edit(){}
   public void remove(){}
}

class EditRole extends UserRole{
   public void view(){}
   public void edit(){}
}

このようにして、ユーザーとそのアクセス許可を分離し、実行時にロールを変更できます。

于 2012-08-06T15:52:13.797 に答える
0

メソッドに「権限」を定義することはできません。代わりに、OOPを使用してドメインのオブジェクトを表すことができます。各オブジェクトは、許可システム内のエンティティを表し、使用が許可されるはずのメソッドを実装できます。

例えば:

class Admin
{
   public void Add(){}
   public void View(){}
   public void Edit(){}
   public void Remove(){}
}


class User
{
   public void View(){}

}

他の人が指摘したように、これはほとんどの設計上の問題です。以前に提案されたあまりにも単純なソリューションは、あまり拡張性がありません:)(アクセス許可を動的に変更する必要がある場合はどうなりますか?別のユーザーに別のアクセス許可を付与する必要がある場合はどうなりますか?)

もちろん、これは宿題の複雑さと要件によって異なります。権限を管理するためのよりエレガントで柔軟なソリューションが必要な場合は、RBAC(ロールベースのアクセス制御)を参照してください。

私の答えは本当の答えではなく、いくつかのヒントにすぎないことに注意してください。とにかく役立つことを願っています。

于 2012-08-05T22:44:47.527 に答える