Rails 웹 사이트에 관리 액세스를 안전하게 추가하는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/947169

문제

답은 관리자 로그인이라고 생각한 다음 사용자에게 관리자 플래그가 있는지 확인하지만 다른 관련 질문도 생각했습니다.

비 관리인과 동일한 사용자 테이블에 관리자 플래그 (Att_Protected)가있는 것이 낫습니까? 아니면 관리자 사용자 테이블이 있어야합니까?

관리자를위한 별도의 레일 애플리케이션을 작성해야합니까? 둘 다 동일한 Datbase에 액세스해야하므로 과잉 일 수 있습니다 (설치가 큰 고통 일 수는 없습니다).

다른 제안이 있습니까? 지금 당장 나는 단지 한 페이지를 보호해야하므로 HTTP Basic 또는 Digest 인증을 임시 측정으로 살펴 보았습니다 (보호 된 컨텐츠는 실제로 개인/중요하지 않습니다). 그러나 ... 특정 조치를 위해 HTTP 인증을 구현하는 방법을 모르겠습니다. 디렉토리 액세스를 방지하기 위해이를 구현하는 방법 만 보았습니다.

어떤 방향과 토론도 좋을 것입니다. 다른 스택 오버플로 사용자 가이 토론에서 혜택을받을 것이라고 확신합니다.

감사!

도움이 되었습니까?

해결책

Ryan Bates는이 주제에 대한 훌륭한 3 개의 파트 시리즈를 가지고있어 생각할 음식을 제공해야합니다.

다른 인증 기술에는 세 가지 레일 스 캐스트가 있습니다.

다른 팁

사용 중입니다 RESTFUL_Authentication 플러그인 이 목적을 위해. 또한 컨트롤러 또는 방법에 대한 액세스를 제한하는 것은 매우 간단합니다. 컨트롤러의 예를 들어이 기능을 추가합니다.

private
def authorized?
  user.admin?
end

또는

private
def authorized?
  user.admin? if update? || create?
end

관리자를 정의 했습니까? 내 사용자 모델의 메소드. 나는 또한 업데이트를 만들었습니까? 그리고 창조? 어떤 동작을 확인하는 방법. Restful_authentication에서 승인 되었습니까? 컨트롤러에 액세스 할 때 메소드는 항상 실행됩니다.

모든 것을 하나의 응용 프로그램과 하나의 테이블에 넣습니다 (사용자와 관리자 테이블을 생성하지 마십시오). 기존 관리자 사용자에게만이 값을 설정하여 사용자 컨트롤러에서 관리자 플래그를 보호 할 수 있습니다.

나는 그것이 행정 유형에 달려 있다고 생각합니다.

관리자가 사이트의보기가 정상 사용자와 동일하지만 추가 권한이있는 경우 관리자 플래그와 함께 이동합니다. (또는 귀하의 요구가 확대됨에 따라 본격적인 역할 테이블.) 이것은 모든 사람이 동일한 내용을 보는 상황이지만 관리자는 일반 사용자가하지 않는 다양한 조치 (삭제? 편집? 금지? 등)에 액세스 할 수 있습니다.

관리자가 필요한보기가 일반 사이트와 크게 다르면 동일한 데이터베이스에 액세스하는 완전히 별도의 레일 앱을 권장합니다. 예를 들어, "관리자"가 실제로 전화 통화에 답하거나 청구 질문을 처리 할 헬프 데스크 직원 인 경우, 이에 대해 사용할 수없는 데이터베이스 (및 데이터를 편집하는 방법)의보기가 완전히 다를 수 있습니다. 정기적 인 응용 프로그램.

여러 사이트를 갖는 것에 대한 단점은 모델 (검증, 연관 등)이 동기화를 벗어날 수 있다는 것입니다. 단일 사이트를 갖는 것에 대한 단점은 이전에 사이트의 전염성이 쉬운 부분에 모든 종류의 못생긴 "if-admin"코드를 삽입 할 수 있다는 것입니다. 처리하기 쉬운 문제는 요구 사항에 따라 다릅니다.

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