이 기능의 컨트롤러에는 필터를 먼저 사용합니다.
제어기 클래스의 서브 클래스를 사용하여 제어기에서 중복 코드를 제거 할 수도 있습니다.
주어진 테넌트의 정보에 대한 액세스는 사용자별로 인증해야한다는 점에 유의하십시오. 주어진 사용자가 둘 이상의 임차인에게 액세스 할 수 있는지 결정해야합니다. 예를 들어 사용자 "joe"가 임차인 1과 2에 액세스해야합니까? 또는 Joe에게 입주자 로그인이 필요합니까?
로그인 권한은 임차인 정보에 대한 액세스를 제어해야합니다. 승인을 위해 도메인 이름에 의존하지 마십시오.
다시 : tenant_id를 유지 하시겠습니까? 세션에 저장하십시오. 세션에 대한 액세스가 비용이 많이 드는 경우 (DBMS에 저장) 컨트롤러를 시작할 때 인스턴스 변수로 메모리 내 복사본을 만듭니다. user_ids가 저장되는 방식에 대한 Google
사용자가 다른 임차인에게 액세스하고 싶은 경우 사용자 환경을 결정해야합니다.
사용자가 로그인하기 전에로드 할 시작 화면을 보려면 하위 도메인 이름을 보는 것이 좋습니다. 들어오는 요청에 사용 된 하위 도메인을 확인하려면 request.fullpath()
Docs. 컨트롤러 필터에서 수행하십시오.
승인이 USER_ID에서 제공하기 때문에, 조 tenant1.app.com에 로그인 할 경우를 테스트하기 위해 기억하지만, 단지 템플릿 시스템을 찾고 tenant2.app.com
보너스 대답에 액세스 할 수 있습니다 고객이 임차인의 사용자 인터페이스를 완벽하게 제어 할 수있게 해줍니다. Liquid templates을 확인하십시오. 나는 고객들이 그들의 모양과 느낌을 안전하게 제어 할 수 있도록하기 위해 그것들을 사용하는 것에 매우 성공적이었다. 코멘트
재 도우미, 그때 세입자가 결정되는 주요 장소로 추천하지 않을 것입니다. @user
및 @tenant
을 한 번 조회 한 다음 동일한 세션에 대한 추가 요청 중에 세션에서 검색하는 경량 모델로 만듭니다. 모델은 컨트롤러에 의해 사용되며 아마도 모델에 전달됩니다. View 레이어는 또한보기 레이어를보고 필요할 때 사용할 수 있습니다.
UI가 다른 테넌트와 완전히 다르게 보일 수 있고 보일 경우보기 외에도 "테넌트 디스플레이"레이어를 추가하십시오. 예를 들어 뷰가 인스턴스 변수를 수집하고 올바른 Liquid 템플릿을 찾은 다음 템플릿을 통해 뷰를 표현합니다.
"tenant_a then x else y"가 표시되지 않게하려면
래리 - 감사합니다. 백 엔드 시스템은 물론 로그인 인증에 의존하지만, 어떤 프런트 엔드 공개 사이트를로드할지 결정하는 방법을 묻습니다. – cman77
업데이트 된 답변 –
래리 - 고마워. 이것을 웹 서버 레벨에서 설정하기위한 모든 포인터/리소스는 무엇입니까? 일부 고객은 하위 도메인을 선호하지만 다른 사용자는 "전체/기본"도메인을 선호 할 것으로 기대됩니다. 또한 -이 논리가 도우미에 있어야하는 경우 컨트롤러 클래스를 서브 클래 싱하는 것이 아닌가 궁금합니다. – cman77