Tag Archives: 권한제어

ORM(JPA,Hibernate)의 미세 권한 제어 1

라고 하면 뭔지 알아듣기 힘들겠지?

일반적으로 spring security와 같은 권한프레임워크의 권한관리는 주소패턴을 따른다.
조금 변경한다고 해도 컨트롤러 서비스별로 권한을 처리한다.

하지만 가끔.. 특정 데이터에 대해서는 이런게 필요한 경우가 있다.
각 테이블별 권한제어
또는 각 테이블의 row당 접근권한 제어..

ORM interceptor를 이용해서 이 부분을 처리할 수 있지 않을까 싶다.

@Entity
@Table(
name = "T_PRECISE_AUTH",
indexes = {
@Index(name="idx_precise_auth_unique", columnList = "groupName,tableName,tableObjectId", unique = true)
})
@org.hibernate.annotations.Cache(region = "Beansugar.Auth", usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@DynamicInsert
@DynamicUpdate
@Getter
@Setter
public class PreciseAuth extends BaseModel {

@Id
// @GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

/**
* Group.name
*/
@Column(length = 20, nullable = false)
private String groupName;

/**
* 각 테이블의 이름
* 예) tbl_zone
*/
@Column(length = 30, nullable = false)
private String tableName;

/**
* table.id
* 각 테이블 row의 id값
* -1인 경우에는 모든 값에 접근가능
*/
private Long tableObjectId;

private boolean readable;
private boolean writable;

@Column(length = 100)
private String description;
} 

현재 이정도 코드로 하면 되지 않을까 생각하고 있다.
다른 한개의 테이블에 권한을 설정해놓고 다른 테이블의 데이터에 대한 권한을 관리할 수 있다.

데이터가 늘어남에 따라 이 테이블도 비대해지는 문제가 있기는 한데… 문제가 생기면 다시 생각해봐야겠다.