2017-11-29 2 views
0

현재 Tomcat 서버에 양식 기반 JDBC 영역 인증이 설정된 웹 프로젝트가 설정되어 있습니다.사용자가 로그인 할 때 요청 추가

HttpServletRequest 클래스를 사용하여 데이터베이스에 로그인하는 사용자의 IP 주소를 저장하려고합니다.

(어떤 조치를 취한 후)이 요청 기능을 JSP 페이지에 추가합니까?

JSP/Servlet, Tomcat 및 MySQL을 사용하고 있습니다.

감사합니다.

답변

0

서블릿 필터를 사용할 수 있습니다. 서블릿 필터를 사용하여 들어오는 HTTP 서블릿 요청을 가로 채고 요청에 대해 원하는대로 수행하거나 항목을 기록 할 수 있습니다.

Tomcat에는 기본적으로 모든 HTTP 요청, 상태, IP 및 사용자 이름이 포함 된 액세스 로그가 있습니다. 다음은 그 예입니다.

192.168.0.47 - - [27/Nov/2017:07:18:07 -0600] "GET /example/module?wsdl HTTP/1.1" 200 3122 
192.168.0.47 - - [27/Nov/2017:07:18:07 -0600] "POST /otherapp/service HTTP/1.1" 200 251 
fe80:0:0:0:fc36:e3bb:5bc4:abce%14 - asm-admin [27/Nov/2017:07:18:08 -0600] "POST /otherapp/HEARTBEAT/?v-uiId=0 HTTP/1.1" 200 - 
fe80:0:0:0:fc36:e3bb:5bc4:abce%14 - asm-admin [27/Nov/2017:07:18:18 -0600] "POST /otherapp/HEARTBEAT/?v-uiId=0 HTTP/1.1" 200 - 
fe80:0:0:0:fc36:e3bb:5bc4:abce%14 - asm-admin [27/Nov/2017:07:18:28 -0600] "POST /otherapp/HEARTBEAT/?v-uiId=0 HTTP/1.1" 200 - 
+0

어디에서이 로그를 찾을 수 있습니까? 또한 어떤 요청이 로그인 요청인지 어떻게 알 수 있습니까? 내 데이터베이스에 게시하는 데 어떻게 사용합니까? – NotAMonkey24

+0

로그인 페이지로 갔기 때문에 로그인 요청임을 알 수 있습니다. 코드가 HTTP 401 일 것이기 때문에 실패한 로그인 요청임을 알 수 있습니다. authN은 성공했지만 코드가 403 일 수 있기 때문에 사용자에게 올바른 권한이 없음을 알 수 있습니다.이 로그 파일은 TOMCAT_HOME/logs 안에 있습니다. 자세한 정보는 여기를 참고하십시오 : http://www.techstacks.com/howto/configure-access-logging-in-tomcat.html –

+0

감사합니다! 현재 getRemoteAddr에서만 0.0.0.0.0.1을 얻고 있지만 로컬 호스트에는 맞습니다. 맞습니까? – NotAMonkey24

0

로그인에 성공하면 요청에서 사용자 이름과 IP 주소를 가져 와서 추가 처리 할 수 ​​있습니다. 내 생각에, 도전은 단지 로그인 후 바로 잡기 위해서입니다. 왜냐하면 tomcats 폼 기반 로그인은 꽤 투명하기 때문입니다. 세션 객체에 사용자 이름을 저장하고 값이 세션에없는 경우에만 데이터를 저장하여 해결했습니다. 아마도 세션이 만료 될 수 있다는 것을 고려해야합니다.

+0

해당 세션 데이터를 저장하기위한 "트리거"는 무엇입니까? – NotAMonkey24

+0

sessionobject 'user'가 설정되지 않은 경우 null과 값을 반환하는 경우 일 수 있습니다. 비슷한 : if (session.getAttribute ("user.name") == null) { saveEntry(); session.setAttribute ("user.name", request.getRemoteUser()); } –

관련 문제