我想在基于Java Web的应用程序中设计角色管理,即Admin可以访问所有资源,Operator只能访问少量资源,View only用户无法访问任何资源。
如果我在“用户”表中保留“角色”列,由于管理员可以执行所有操作,因此对于操作员可以执行的所有操作,我必须随时检查管理员。如下所示
if (role == Operator or **role== Admin**)
{
do this....
}
否则,它将阻止该操作的管理员。
此外,如果将来角色类型增加,它会产生很多分散的情况。
考虑到未来的增强,设计它的最佳方法是什么?
P.S。我不想使用像Spring Security这样的框架。
答案 0 :(得分:0)
我会在checkRole(role)
实体类中添加User
方法,检查用户是否具有指定的角色。如果用户没有角色,它可以返回boolean
或抛出专门的异常。
要添加范围功能,请尝试以下方法:
// Create role constants:
public final int ADMIN = 2;
public final int OPERATOR = 1;
public final int VIEW_ONLY = 0;
// Then implement the checkRole method:
public void checkRole(int role) {
if (this.role < role)
throw new MyAuthException("Insufficient rights");
}
// And in your action methods you can check for rights like this:
public .... Action(....) throws MyAuthException {
loggedInUser.checkRole(OPERATOR);
// Do whatever this action should do...
}