有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javaweb应用中的数据库角色管理

我想在基于Java Web的应用程序中设计角色管理,即管理员可以访问所有资源,操作员只能访问少数资源,仅查看用户不能访问任何资源

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

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

   do this....

}  

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

此外,如果将来角色类型增加,它将创建大量分散的if-else

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

另外,我不想使用像Spring Security这样的框架


共 (1) 个答案

  1. # 1 楼答案

    我将在User实体类中添加一个checkRole(role)方法,用于检查用户是否具有指定的角色。它可以返回一个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...
    }