0

我正在为计算机实验室管理系统开发一个应用程序,这是我的任务。我正在使用 SQL Server 编写 SQL 脚本并管理我的数据库,我使用 netbeans 编写 Java 源代码并通过 JDBC 与 SQL Server 交互。

我想为我的应用程序中的每个方法设置角色并设置权限。示例:管理员可以查看/添加/编辑/删除用户用户只能查看记录。

管理员可以使用 void view()、add()、edit()、remove。但是,void view() 只能由用户使用,用户不能使用方法:add()、edit()。我尝试搜索,阅读一些书,寻找一些文章来解决我的问题。但是,......我没有找到任何文章!

感谢您的阅读!

4

2 回答 2

1

由于 Admin、User 等是角色而不是显式用户,我建议使用角色模式。这里有一个小例子:

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 回答