在定义具有不同角色/权限的用户时,有哪些最佳做法,例如具有受限访问权限的普通用户和具有完全访问权限的管理员?
我的用户类看起来像这样:
@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进行映射?
答案 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;