2009-05-11 5 views
0

MySQL과 Tomcat을 사용하여 고전적인 3-tier 웹 애플리케이션을 빌드했습니다.현재 사용자를 데이터베이스 레이어로 데려 오기

모든 테이블에 대해 각 데이터베이스 레코드의 생성자 ID를 creator_id 열에 저장하거나 그냥 어딘가에 로그하려고합니다. 현재 사용자는 http 세션 객체에 저장됩니다. 모든 쿼리를 수정하고 작성자 ID 매개 변수를 전달하는 것을 허용하지 않습니다.

트리거, 변경 테이블 명령 등을 사용하여 문제를 해결할 수 있습니까? 이를 수행하는 가장 좋은 방법은 무엇입니까?

추신. 해킹은 허용되며 환영합니다.

답변

2

데이터베이스는 아마도 그것이 알고 모두가있는 데이터베이스 사용자입니다 쿼리를 전송하는 사이트 사용자가 알 수 없습니다. 웹 애플리케이션이라면 누가 웹 사이트에 로그인했는지에 관계없이 항상 동일한 데이터베이스 사용자 일 것입니다.

짧은 대답은 모든 사이트 사용자에 대해 데이터베이스 사용자를 만들고 해당 사이트를 사용하여 데이터베이스 연결을 열지 않는 한 "수용 할 수없는"옵션을 사용해야한다는 것입니다. 하나의 "공유 된"사용자 대신 그러나 그것은 결국 해결할 수있는 것보다 많은 문제를 야기 할 수 있습니다.

+0

나는 열려있는 모든 세션에 대해 분리 된 db 사용자와 db 연결을 생각하고 있었지만 그 기능은 내가 사용하는 프레임 워크에서 지원되지 않습니다. 다른 방법이 있습니까? 해킹은 허용되며 환영합니다. –

0

귀하의 질문에서 귀하의 논리적 응용 프로그램 사용자 ID가 귀하의 데이터베이스 연결 ID와 다른 내용을 기반으로합니다. 그렇다면 데이터베이스가 논리적 응용 프로그램 사용자 ID가 무엇인지를 어떻게 알 수 있습니까? 당신이 그것을 전달하지 않으면 누가 그것을하고 있는지를 알 수있는 방법이 없습니다. 이를 전달하기 위해 모든 쿼리를 수정하는 것은 용납 될 수 없다고 말하지만,이 "creator_id"값을 기록하려는 저장 만 수정하면됩니다. 이러한 테이블도 수정해야합니다. 다행히이 모든 사용자를 포함하는 테이블이 있고이 테이블의 새 열을 FK로 만들 수 있습니다.

관련 문제