좀 복잡한 커뮤니티인데 뭐 권한 관리할거 하나 생길때마다 테이블 수정하고 코드 수정하고 하려니 너무 귀찮고 누더기 쌓는 기분임
보통 어떤식으로 함??
댓글 4
복잡하면 복잡한데로 발목잡히는 느낌이듬. 경험상 제일 편했던건, permission 테이블 만들고 여기서 꺼내쓰기. {resource, action, user(user or group), access(allow or deny) } 였음. 로그인하면 DB에서 꺼내서 JSON으로 레디스에 TTL 걸어서 박아두고, validate 할땐, 리소스 기준으로 deny = 0, allow = 1 로 설정해서 다 곱하는 형태로 판별. 0으로 곱하니까 deny 1개가 있으면 거부가 되는 형태. 결론은 사람이 인지하기 쉽고 추가 삭제가 쉬운 형태의 구조라야 편하더라.
복잡하면 복잡한데로 발목잡히는 느낌이듬. 경험상 제일 편했던건, permission 테이블 만들고 여기서 꺼내쓰기. {resource, action, user(user or group), access(allow or deny) } 였음. 로그인하면 DB에서 꺼내서 JSON으로 레디스에 TTL 걸어서 박아두고, validate 할땐, 리소스 기준으로 deny = 0, allow = 1 로 설정해서 다 곱하는 형태로 판별. 0으로 곱하니까 deny 1개가 있으면 거부가 되는 형태. 결론은 사람이 인지하기 쉽고 추가 삭제가 쉬운 형태의 구조라야 편하더라.
{resource: 'board/github' - action:'delete' - user:'*', access: 0, force:'own'}
Role based access control
IAM