识别用户角色和权限的最佳做法?

时间:2012-11-20 04:07:41

标签: java hibernate

在定义具有不同角色/权限的用户时,有哪些最佳做法,例如具有受限访问权限的普通用户和具有完全访问权限的管理员?

我的用户类看起来像这样:

@Entity
@Table(name = "users")
public class User {
    @Id
    @Column(name = "userID")
    @GeneratedValue(generator = "increment")
    @GenericGenerator(name = "increment", strategy = "increment")
    private Long userID;

    public Long getUserID() {
        return userID;
    }

    @ManyToOne(fetch = FetchType.LAZY)
    @Column(nullable = false)
    private Role role;

    @Column(nullable = false)
    private boolean isActive;

    @Column(nullable = false, unique = true)
    private String email;

    @Column(nullable = false)
    private String password;    

    @Column
    @Temporal(TemporalType.TIMESTAMP)
    private Calendar lastLoggedIn;

    @Column(nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    private Calendar createdDate;

    @Version
    private Integer version;
}

我的角色类是:

@Entity
@Table(name = "roles")
public class Role {
    @Id
    @Column(name = "roleID")
    @GeneratedValue(generator = "increment")
    @GenericGenerator(name = "increment", strategy = "increment")
    private Long roleID;

    @Column(nullable = false)
    private String roleName;

    @Column(nullable = false)
    private String rolePermissions;
}

如果User的实例持有对Role的实例(或代理)的引用,请说我的应用程序需要检索用户及其角色的列表?如果我的应用程序必须找到特定角色的所有用户,那么角色必须有一个用户列表吗?设计和实施这种关系有哪些尝试和真实的方法?

另外,我是否正确使用JPA进行映射?

2 个答案:

答案 0 :(得分:0)

我建议使用

@role=Admin

用于所有管理员级别的功能

并使用

@role=User

对于普通用户,如果注释需要更多

答案 1 :(得分:0)

你应该使用,

@CollectionOfElements
@JoinTable(name = "ROLE_PERMISSIONS", joinColumns = @JoinColumn(name = "roleID"))
@Column(name = "Permission")
private List<String> rolePermissions;

代替,

@Column(nullable = false)
private String rolePermissions;