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

私のアプリケーションがユーザーとそのロールのリストを取得する必要があるとしましょう。ユーザーのインスタンスはロールのインスタンス(またはプロキシ)への参照を保持する必要がありますか?アプリケーションが特定のロールのすべてのユーザーを検索する必要がある場合、ロールにはユーザーのリストが必要ですか?この関係を設計および実装するための、試行錯誤された真の方法は何ですか?

また、JPAで正しくマッピングを行っていますか?

4

2 に答える 2

0

使用することをお勧めします

@role=Admin

すべての管理者レベルの機能

と使用

@role=User

通常のユーザーの場合、および必要に応じて注釈の場合はそれ以上

于 2012-11-20T04:14:42.020 に答える
0

使用する必要があります、

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

それ以外の、

@Column(nullable = false)
private String rolePermissions;
于 2012-11-20T04:42:45.760 に答える