2012-11-20 164 views
0

定義具有不同角色/權限的用戶時,有哪些最佳實踐有哪些,例如限制訪問的普通用戶和具有完全訪問權限的管理員?識別用戶角色和權限的最佳做法?

我的用戶類看起來是這樣的:

@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; 
} 

說我的應用程序需要檢索的用戶列表和自己的角色,應用戶的一個實例持有對Role的實例(或代理)的引用?如果我的應用程序必須爲特定角色查找所有用戶,那麼角色是否必須擁有用戶列表?什麼是設計和實施這種關係的嘗試和真實的方式?

另外,我正在與JPA正確地做映射嗎?

+0

用戶和角色之間的外鍵的角色名或角色ID? –

+0

它應該是roleId,JPA不會處理這個問題嗎? –

+0

它對我來說很奇怪......應該不是角色<->用戶是多對多的嗎? –

回答

0

您應該使用,

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

代替,

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

我會建議使用

@role=Admin 

所有管理員級別的功能

,並使用

@role=User 

對於普通用戶和更多,如果註釋如果necesary