문제

나는 건물 커뮤니티 기반에서 사이트 레일의 구성원에 대한 실제 조직입니다.나 준수하려는 모범 사례의 편안한 디자인,그리고 그것의 대부분은 더 많거나 적은 에 의하여 책입니다.는 문제들이 제 두뇌에서 실행 깔끔한 편안한 원가의 권한 부여입니다. 인증 운 긴 해결에 문제가 널리 사용되는 편안한 솔루션이지만,편안한 인증을 수여합니다.나를 찾으려고 하는 접근 방식을 제공할 것이 가장 일반적이고 유연한 프레임워크에 대한 액세스를 제어할 수 있는 리소스를 되는 동안,가능한 한 간단하는 동안 모두를 따르는 편안한 건물입니다.(또한,조랑말이 있습니다.)

고려 사항:

  1. 나는에 대한 액세스를 제어해야 할 다양한 리소스,같은 사용자로,페이지,게시,등등.
  2. 에 대한 권한이 주어진 자원해야 합 세밀한 보다 간단한 CRUD.
  3. 나를 허용하는 나 자신과 다른 사람이 편집하는 권한 규칙 내에서 응용 프로그램.
  4. 승인 규칙이 허용되어야 하에 따라 조건부 등(개념적으로)소유자(사용자,리소스)또는 잠금(항목)

고려(2)하나에 대한 자세한 내용은 언제 가장합니다.가 될 것으로 보인 임피던스 불일치 사이의 개념을 사용 권한과 편안한 개념의 작업이 있습니다.예를 들어,게시물(에서와 같이 메시지 보드).나머지 지시의 존재는 네 개의 작업에 리소스:을 만들고,읽고,업데이트하고,삭제할 수 있습니다.그것은 간단하다는 말을 사용할 수 있어야 업데이트를 자신의 게시물이지만,특정 사용자(또는 역할을,또는 그룹)을 허용되어야 한를 잠급니다.전통적인 방법을 나타내는 잠금 상태에서의 게시물이지만,이어지는 냄새는 사용자에서 동일한 조건 수 있습니다 또는 할 수 없 업데이트 게시물에 따라(완전히 유효)값 그는 용품입니다.그것은 보인다 명확하게 있다는 것을 정말 두 개의 서로 다른 작업의 상태를 변경하려면에 게시하고,슈 혼 그들은 단순하게 변장의 위반이 편안한 원칙입니다.

(나가 참고해야 하는 이 문제는 매우에서 별개의 문제입 업데이트를 실패로 인해 잘못된 또는 불일치 데이터 잠금에서 요청하는 비특권 사용자는 원칙적으로 매우 유효한,단순히 허용되지 않습니다.)

지 않는 분해 또 다른 단어 부패?

이것을 극복할 수 있습니다 의 분해하는 게시물:자물쇠는 하위 리소스의 특정 게시물을 만들거나 파괴할 수 있음이 있는 별도의 권한이 있습니다.이 솔루션은 반지의 나머지 부분을,그러나 그것으로 가져온 이론적 및 실제적인 어려움이 있습니다.면 요인 잠금 장치,다음에 대해 어떻게 다른가?나는 결정에 맞게 카프리스,그만의 멤버 관리자가 허용되어야 한 수정하는 글의 제목?간단한 변화에서 인증한 다음 필요한 구조조정 데이터베이스의 수용요!이것은 많은 솔루션입니다.을 허용하기 위해 이런 종류의 유연성에서 전략의 분해 필요로 하는 모든 특성이 있는 리소스입니다.이것은 비트의 딜레마입니다.내 암시적으로 가정되었는 리소스를 표현으로 데이터베이스에 테이블에 있습니다.에서 이러한 가정을 리소스에 대한 모든 특성이 의미하는 테이블에 대한 모든 특성이 있습니다.분명히,이것이 실용적이지 않습니다.그러나,이것을 제거하는 가정을 제공합 임피던스 불일치 사이에는 테이블과 자원을 열 수 있는 자신의 수 있습니다.이 방법을 사용할 필요한 것이 훨씬 더 깊이있는 고려다 주었습니다.에 대한 것이고,사용자가 합리적으로 기대할 수 있는 여러 특성이다.어디에 요청이 가는가?가장 작은 자원을 포함하는 모든 특?개별 리소스에서 병렬?달?

이러한 것들 중 일부는 다른 사람을 좋아하지...

런데 그가 분해되지 않습니다 특성이 있습니다.대체 그런 것을 정의하는 설정의 권한을 위해 각 리소스입니다.이점은,그러나,동질성의 나머지는 잃었다.을 정의하기 위해 액세스한 규칙에 대한 리소스,시스템의 구체적인 지식을 가지고 있어야합하는 자원을 제공합니다.또한,그것은 이제 불가능한 일반적으로 사용 권한을 전파 자손한 자원인 경우에도 아이 리소스가 있었는 권한이 동일한 이름 없는 고유의 의미 사이를 연결 권한이 있습니다.을 정의하는 나머지 같이 설정한 표준 권한이 최악의 두 세계,그래서 내가 붙어 있으로 별도의 권한 계층의 각 유형을 위해 리소스입니다.

음,우리가 수행합니다.고 있습니다.하지만 그것은 자원!

한 가지 제안을 봤을 완화의 일부는 단점이 위의 접근 권한을 정의로 만들기/삭제 자원 고 읽기/쓰기에 특성.이 시스템은 타협 사이에는 특성으로 자원의 권한별 리소스:하나는 여전히 남아있으로만 지난하지만,위의 권한 부여,읽고,업데이트와 관련된 특성으로 생각할 수 있습 의사 리소스입니다.이 제공하는 많은 실질적인 혜택을의 특성으로 리소스 접근 방식이지만 개념적 무결성은,어느 정도 손상됩니다.한 권한 수직에서 전파 리소스를 자원하고 자원을 의사 리소스,하지만 결코에서 의사 리소스입니다.나는 완전히 탐구 결과의 전략,그러나 그것은 그것이 될 수 있습니다.그것은 나에게 발생하는 이러한 시스템이 최고의 기능에 필수적인 부분으로의 모델입니다.에 레일이,예를 들어,그것은 수의 개조 ActiveRecord.이것은 오히려 격렬하지만,권한 부여 같은 기본적인 크로스 절단에 관심이 될 수 있다는 것을 정당화된다.

아,그리고 잊지 마세에 대한 조랑말

이 모든 것을 무시의 문제 서술 한 권한이 있습니다.분명히 사용자가 편집할 수 있는 자신의 게시물이지만,아무도 없습니다.동등하게는 분명,관리자 작성 권한이 없는 별도의 레코드를 위해 각 사용자에 따라 다릅니다.이것은 거의 기타 요구 사항—트릭은 그것을 만드는 일반적입니다.내가 생각하는 모든 기능이 필요 얻을 수 있을 것이다에 의해 만들만 규정 는 서술도록 적용 규칙의 수정이 빠르고 즉시.규칙"allow User write Post where Author(User, Post)"가 번역하기를"for all User, Post such that Author(User, Post), allow User write Post"및"deny all write Post where Locked(Post)"를"for all Post such that Locked(Post), deny all write Post".(이것은 것 랜드 모든 경우 이러한 조건자가 될 수 있는 측면에서 표현의 사용자 한 명과 한 리소스입니다.) 개념적으로 결과"마지막"규칙을 것이 아닌 는 서술.이 질문의를 구현하는 방법 이러한 시스템입니다.조건자의 구성원이어야 합 모델 클래스,하지만 어떻게 참조할 수 있습을 그들에게 정상적으로의 컨텍스트에서 규칙이 있습니다.그렇게 안전하게 필요한 것이 어떤 종류의 반영이다.여기서 다시 나가는 느낌이 필요는 개조의 모델을 구현합니다.

어떻게 당신이 주문을까요?

마지막 질문은 어떻게 최고의를 나타내에 이러한 권한 규칙으로 데이터입니다.데이터베이스 테이블,트릭을 할 수 있습으로 열거한 열에 대한 허용을 거부/고 C/R/U/D(또는 아마도 CRUD bits?또는 아마도{C,R,U,D}×{허용,거부,상속}?), 고 자원이 열 경로입니다.아마도,편의,는 상속 비트입니다.나는 손실에서 멀리로는 조건자.별도의 테이블?확실히 많이의 캐싱되는 것을 방지하기 위해 건 느립니다.


나는 생각이 많이 부탁드립니다.려고 했지 숙제를하기 전에게 묻는 질문,그러나 이 시점에서 내가 정말 필요한 외부의 관점입니다.감사하겠 어떤 입력되는 모든 내에 있는 문제입니다.

도움이 되었습니까?

해결책

죄송 시간이 없어요 이렇게 질문을 정의,그러나 그것은 좋은 일만 생각한 질문에 그래서.여기에는 일부 의견:

하지 않는 함정에 빠지지의 매핑 HTTP 동사하는 CRUD.예를 얻을 삭제도 꽤 깨끗하게,하지만 할 수 있을 만들고 업데이트(하지만 완전한 대체만)및 포스트는 와일드카드 동사입니다.게시물은 정말로 모든 것을 처리에 맞지 않는 GET,PUT, 삭제합니다.

사용 특성을 나타내는 객체의 상태를 단 하나의 접근 방식 상태 관리.나는 추측 당신이 상상할 수 있는 것은 다음과 같은 요청을 할 수 있다:

POST /LockedPosts?url=/Post/2010

는 하위 리소스입니다 또한 유효한 접근 방식을 관리의 현재 상태원입니다.나는 것을 느끼지 않을 의무가를 치료하는 리소스의"상태"속성의"data"속성에서 일관된 방식이다.

을 시도하지도 리소스에 직접기 테이블은 심각하게 제한하는 당신.는 것을 잊지 않는 경우 나머지 부분을 따라 제약을 당신은 갑자기 아주 제한하는 동사로 사용할 수 있습니다.당신이해야 할 수 있는 창의적에 자원을 제공하지 않습니다.자신을 제한 하나의 자원을 같이 하나 테이블이 심하게 제한하는 기능의 최종 응용 프로그램.

우리는 정기적으로 볼 레일 ASP.NET MVC 및 WCF 나머지를 게시하는 사용자 질문에 여기에서 유래에 대해 어떻게 특정 내에서 일 제약의 나머지입니다.문제는 종종 제약조건의 나머지 부분에서만 제한에 프레임워크에 대한 지원을 편안한다.내가 생각하는 것이 필수적입을 먼저 찾는 편안한 문제에 대한 해결책과는 경우 다음을 참조하십시오에 매핑할 수 있는 다시 프레임워크의 선택입니다.

로 만들 권한 모델에 존재하는 미세한 입자보다는 자원 자체입니다.을 기억하는 하나의 키를 나머지를 제한하는 하이퍼미디어.하이퍼미디어에 사용할 수 있습 그 이상을 찾는 관련 엔될 수도 있습을 나타내는 데 사용되는 유효하고 허용됨 상태로 전환됩니다.을 반환하는 경우에는 표현 이상이 포함된 링크를 조건에 따라 사용 권한에 따라,당신은 무엇을 제어 할 수 있습니다 작업을 수행할 수 있습니다.즉는 경우 사용자 권한 잠금을 해제하는 게시물 342 다음을 반환 할 수 있습니다 다음에 포함된 링크를 표현:

<Link href="/UnlockedPosts?url=/Post/342" method="POST"/>

하지 않는 경우가 있는 권한,그 반환하지 않 링크가 있습니다.

내 생각은 하나의 당신의 어려움에 여기는 당신이 시도하고 있는 씹을 너무 큰 문제다.나는 당신이 필요하다고 생각하는 모습에서 편안한 인터페이스하려는 노출로 클라이언트에 뚜렷한 문제에서 어떻게 하려고 관리 권한 및 조건자를 관리하기 위해 권한에서 도메인 모델입니다.

나는 나는 없 직접 응답하 어떤 질문,하지만 희망을 제공했 몇 가지 관점에 도움이 될 수있는 몇 가지 방법입니다.

다른 팁

나는 최근에 발견되는 인증 솔루션을 것 같은 주소 대부분의 문제입니다.만약 당신이 좋아하는 이 질문에 그것에 관심이 있으신

https://github.com/stffn/declarative_authorization

로 휴즈 로 지적한 나머지지 않는 CRUD.는 것을 발견하면 확인된 자원을 너무 거친 세분화된 것 균일한 인터페이스를 제공하지 않습 충분한 제한 다음 분할의 자원으로 하위원하고 사용하는 원래의 자원으로는'컬렉션'의 하이퍼 링크의 구성 요소입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top