我正在开发一个计算机实验室管理系统的应用程序,这是我的任务。我正在使用SQL Server编写SQL脚本,管理我的数据库,并使用netbeans编写Java源代码并通过JDBC与SQL Server进行交互。
我想为我的应用程序中的每个方法设置角色并设置权限。例: 管理员可以查看/添加/编辑/删除用户 用户只能查看记录。
void view(),add(),edit(),remove可以由admin使用。但是,void view()只能由用户使用,而用户不能使用方法:add(),edit()。我试过搜索,读了一些书,找了一些文章来解决我的麻烦。但是,......我找不到任何文章!
感谢您的阅读!
答案 0 :(得分: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(){}
}
这样您就可以隔离用户及其权限,并且可以在运行时更改角色。
答案 1 :(得分:0)
您无法在方法上定义“权限”。 您可以改为使用OOP来表示域的对象。每个对象都可以表示权限系统中的实体,实现允许使用的方法。
例如:
class Admin
{
public void Add(){}
public void View(){}
public void Edit(){}
public void Remove(){}
}
class User
{
public void View(){}
}
与其他人指出的一样,这是一个设计问题。之前提出的太简单的解决方案不能很好地扩展:)(如果你需要动态更改权限怎么办?如果不同的权限应该授予不同的用户怎么办?)
这当然取决于作业的复杂性和要求。如果您需要更优雅和灵活的解决方案来管理权限,您可以查看RBAC(基于角色的访问控制)。
请注意,我的不是一个真正的答案,只是一些提示。希望无论如何都能提供帮助。