2013-03-07 5 views
0

postgreSQL 9.1을 사용하고 있습니다. DB에 4 명의 역할/사용자를 만들었습니다. 각 사용자마다 서로 다른 테이블에 다른 권한이 있습니다.로그인 후 새 사용자로 postgreSQL에 다시 연결

누군가가 로그인 할 때, PHP는

같은 "게스트"(첫 번째 역할/사용자)로 DB에 연결

$conn = pg_connect("host=localhost port=5432 dbname=mydb user=guest password=guest")or die('no connection, sorry'); 

고객 만 확인하려면 "사용자"테이블에서 "선택"할 수 있습니다 로그인. succesfull 로그인 후 "users"테이블의 "level"이라는 int에 따라 사용자를 db에 다시 연결하려고합니다. 테이블에있는 "수준"1이면 내가

$conn = pg_connect("host=localhost port=5432 dbname=mydb user=low password=low")or die('no connection, sorry'); 

"낮은"역할처럼, "저"역할/사용자로 사용자를 다시 연결하려는/사용자는 삽입하고 일부 테이블에 업데이트 할 수 있습니다.

그리고 다른 역할/사용자의 경우. users 테이블에 "level"이 2 인 경우 "중간"(연결/삽입/업데이트/삭제 가능)으로 연결하고 3이면 "높음"(수퍼 유저)으로 연결합니다.

간단히 말해서, "손님"으로 연결하여 로그인을 선택하고 유효성을 검사 할 수 있습니다> 로그인 성공> "수준"에 따라 "낮음"으로 다시 연결하므로 다음과 같이 삽입/업데이트 할 수 있습니다. "mid"그래서 당신은 삽입/업데이트/삭제할 수 있습니다 또는 "높은"수퍼 유저.

어떻게 할 수 있습니까? 성공적으로 로그인 한 후 다시 연결하면 사용자가 필요한 권한을 얻을 수 있으므로 올바른 작업을 수행 할 수 있습니까?

GRANT ROLE my_app_user1 TO guest; 

그런 다음 인증이 성공하면 당신은 그냥 할 수 있습니다 :

+0

성공적인 로그인 후 현재 db에서 연결을 끊고 적절한 권한 수준에 다시 연결하십시오. – shapeshifter

+0

db resourse를 pg_close, http://php.net/manual/en/function.pg-close.php로 전달하십시오. – shapeshifter

답변

1

간단한 것은 당신이 게스트 사용자가 권한을 변경할 역할 사용법을 부여하는 것입니다 감사

SET ROLE my_app_user1; 

중간에 인증 검사를 실행할 수 있습니다.

관련 문제