다른 서버간 회원 db 공유 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

다른 서버간 회원 db 공유 정보

다른 서버간 회원 db 공유

본문

안녕하세요. 작은 학교 커뮤니티 사이트 운영중인 학생입니다.
다른 리눅스 서버간에 회원db를 공유하려 합니다.
 
두 서버모두 루트권한 가지고 있고 모두 g4 입니다.
 
회원가입은 한 쪽 사이트에서만 받을 생각이고,
한쪽 사이트에서는 로그인이 가능하면 됩니다.
 
질문답변 찾아 보니 아예 전체 테이블 공유하는 기능은 있던것 같은데..
필드공유하는 방법은 없던것 같네요.
 
1. 그누보드 수준에서 회원db를 다른 서버와 공유하는 기능이 있는지.
2. mysql 수준에서 하려면 어떻게 해야하는지.
 
답변 부탁드립니다.
 
 
 

댓글 전체

get_member가 회원 관련 거의 모든 것에 관여합니다.

이 함수를 잘 고쳐서

자기 서버가 아닌 다른 서버의 디비에 접속해서 회원 정보를 가져오게 하면 됩니다.

이 정도는 작업 의뢰 수준인 듯하네요.
물론 이문제의 핵심은
로그인 처리에도 있겟지만
로그인 유지에도 관계가 있겠죠.
단순히 회원정보를 가져오는 데에서 그쳐서는 근본적인 해결이 되지 않습니다.

한 사이트에서 로그인 체로 활동하였을때
다른 사이트에서도 동시에 로그인 정보가 계속 유지되어야 겟지요.

즉 이사이트에서 로그인체로 활동하다가
메뉴나 링크를 통해 다른 사이트로 이동하더라도
로그인 상태가 유지되어야 한다는 것이고
한사이트 에서 로그아웃 하면
동시에 다른사이트에서도 로그아웃되어야 한다는 것이겠지요.

방법은 여러가지가 있겠지만
소켓을 통한 방식을 이용하고
두사이트간 규칙(패스워드)을 정하고
정의된 방식으로 소켓통신하여
그런부분들을 처리해주는것이 좋습니다
로그인 유지를 쿠키로 사용하면 어떨까요.
같은 도메인을 사용한다면 로그인시 로그인상태를 쿠키값으로 설정하고 다른 사이트에서 그걸 확인하는 거지요.
단점으로는 쿠키설정을 할수 없는 브라우저가 문제이겠죠. 세션을 이용하는 방법도 있겠네요. 아파치쪽에서 세션을 공유할 수 있도록 설정을 할 수 있다면...
네 물론 세션과 쿠키도 사용해야 합니다.

제가 위에서 언급한 방법은
다른 시스템, 다른 데이터베이스, 다른 로그인 방식, 다른 도메인에서도
모두 사용가능한 방법입니다.

해당 로직은 이렇습니다.
두사이트를 A와 B라고 하고
A사이트의 회원정보만을 사용한다고 가정합니다.

회원정보가 없는 B사이트에서 로그인 할려고 합니다.
1. 회원아이디 비밀번호를 받는다.
2. B사이트에서 로그인 처리하는 파일에서 A사이트의 logincheck.php파일에 소켓으로 연결합니다.
3. 받은 아이디와 패스워드, 그리고 두사이트간 규정된 인증패스워드를 보냅니다.
4. A사이트의 logincheck.php 파일에서는 먼저 인증패스워드가 일치하는지 검사한후, 틀리면
에러코드 1을 출력합니다. 맞다면 다음과정을 진행합니다.
5. A사이트의 logincheck.php에서 해당디비에 회원정보가 일치하는 검색하후, 틀리면 에러코드 2(아이디없음), 3(패스워드틀림) 등을 출력합니다. 맞다면 A사이트의 로그인처리 방식데로 로그인을 처리합니다. 그런다음 성공코드 10 을 출력합니다.
6. B사이트의 로그인 처리파일에서 소켓연결결과 리턴 메세지가 1에서 3이면 에러메시지 출력하고
다시 로그인 페이지로 보내고, 10이면 로그인 처리를 한후 페이지 이동을 합니다. --> 두사이트에서 로그인 성공

7. A사이트에서 로그인 할경우 정상적인 로그인 처리를 한연후에 B사이트의 로그인 처리 페이지에
소켓접속한후 로그인 관련 정보와 인증패스워드를 보냅니다.

8. B사이트에서 해당 정보로 아무런 체크없이 로그인 처리를 합니다.

9. A사이트의 로그인 처리 페이지는 B사이트와 연결완료후 다른 페이지로 이동합니다.

10. 로그아웃은 양쪽 모두 위와 같은 과정을 거치되 회원체크는 할 필요없습니다.

11. 로그인 유지는 A사이트나 B사이트나 모든 페이지에 회원으로 로그인 중일경우에느
로그인체크하는 부분을 포함시킵니다.

12. B사이트에서 로그인중이면서 어떤페이지를 열때 그페이지에선 로그인정보가 맞는지 체크하는 부분을
실행합니다. 로그인아이디와 패스워드, 인증패스워드등을 A사이트의 체크파일에 소켓연결한후
전송하고 결과를 받고 에러코드가 리턴되면 로그아웃을 시킵니다. 성공코드가 리턴되면 로그인 관련 쿠키나
 세션을 재갱신 시킵니다.(로그인 타임이 있을겨우)

13. A사이트의 체크 파일에선 B사이트에서 넘어온 정보를 데이터베이스의 회원정보와 비교하여
일치하는 정보가 없으면 에러 코드를 출력하고, 일치하는 정보가 있다면 성공코드를 출력한 연후에
로그인 정보를 갱신 시킵니다.

14. A사이트에서 로그인 체로 어떤 행위를 할때 A 사이트의 로그인체크하는 부분이 실행되고
데이타 베이스 정보와 일치하면 B사이트의 해당 파일을 연결하여
로그인 정보를 연장시킵니다.

음 말은 장황한데..... 설명을 잘 못해서 이해가 되실런지......
아무튼 이런 방법으로 서로다른 이기종간의 사이트에서 회원정보의 공유와 로그인 정보 공유 등이 가능합니다.

서버 클라이언트 개념으로 보면
회원정보를 가진 A사이트가 서버가 되는것이고
회원정보를 가지지 않은 B사이트가 클라이언트가 되는 것입니다.
전체 66,558 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT