Java Web应用程序中的角色管理

时间:2017-06-16 12:55:18

标签: java database user-roles

我想在基于Java Web的应用程序中设计角色管理,即Admin可以访问所有资源,Operator只能访问少量资源,View only用户无法访问任何资源。

如果我在“用户”表中保留“角色”列,由于管理员可以执行所有操作,因此对于操作员可以执行的所有操作,我必须随时检查管理员。如下所示

if (role == Operator or **role== Admin**)
{

   do this....

}  

否则,它将阻止该操作的管理员。

此外,如果将来角色类型增加,它会产生很多分散的情况。

考虑到未来的增强,设计它的最佳方法是什么?

P.S。我不想使用像Spring Security这样的框架。

1 个答案:

答案 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...
}