2012-08-05 70 views
0

我正在开发一个计算机实验室管理系统的应用程序,这是我的任务。我使用SQL Server编写SQL脚本,并管理我的数据库,并使用netbeans编写Java源代码并通过JDBC与SQL Server交互。如何为Java中的每个方法分配角色和设置权限?

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

void view(),add(),edit(),remove可以被admin使用。但是,void view()只能由用户使用,并且用户不能使用方法:add(),edit()。我试过搜索,看了一些书,为我的麻烦寻找一些文章。但是,没有我发现的文章!

谢谢您的阅读!

+0

这是比什么都一个设计问题。您不会将方法限制为用户角色本身。 – 2012-08-05 22:27:15

+0

我同意@Tyler。你需要提出一个设计来执行赋值的要求。也许你可以从一个'Role'接口开始,为它提供具体的类。 – 2012-08-05 22:36:15

回答

0

那么你不能在方法上定义“权限”。 您可以改为使用OOP来表示您的域的对象。每个对象都可以代表权限系统中的实体,实现它应该允许使用的方法。

例如:

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


class User 
{ 
    public void View(){} 

} 

与其他人一样指出,这是一个最大的设计问题。之前提出的过分简单的解决方案并不规模非常好:)(如果你需要动态改变权限?如果不同的权限应授予不同的用户?)

这当然取决于复杂性和你家庭作业的要求。如果您需要一个更优雅灵活的解决方案来管理权限,您可以查看RBAC(基于角色的访问控制)。

请注意,我不是一个真正的答案,只是一些提示。无论如何希望有所帮助。

+0

非常感谢! – 2012-08-06 18:52:50

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(){} 
} 

这样你隔离用户及其权限,你可以在运行时更改角色。

+0

非常感谢! – 2012-08-06 18:52:15