[JSP] JSP 사용자 로그인 확인

4108 단어
프로젝트 개발 과정에서 일부 페이지는 사용자의 로그인을 거쳐야 접근할 수 있습니다. 로그인 검증을 하지 않으면 사용자가 브라우저의 주소 표시줄에 방문 페이지를 입력하면 접근할 수 있기 때문에 로그인을 해야 표시할 수 있는 페이지에 인증을 추가합니다.
JSP 페이지 검증, 관련 지식은Session, 페이지 권한, 사용자 검증 등이 있습니다.
세션 객체
세션 대상은 사용자 세션에 대한 모든 정보를 저장하는 데 사용됩니다. 한 세션은 브라우저와 서버 간의 통화입니다. 브라우저와 서버 간의 여러 번의 요청, 응답 과정을 포함합니다.session은 JSP 내장 대상으로 브라우저와 일일이 대응하여 사용자가 세션 상태의 정보를 저장하고 추출할 수 있으며 정보는 서버에 저장할 수 있습니다.
 
세션 정보 얻기
1) JSP
<span style="font-size:18px;">session.setAttribute("user", USERNAME);      // session </span>

2) Java(Servlet)
<span style="font-size:18px;">request.getSession().setAttribute("user",USERNAME);       // session </span>

세션 제한 시간 설정
1) web.xml
<span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8"?>
<web-app>
    ...
    <session-config>
       <session-timeout>30</session-timeout>           <!--  , 30  -->
   </session-config>
</web-app></span>

2) Java
request.getSession().setMaxInactiveInterval(30*60);//session 실효 시간 설정(timeout) 초
참고: setMaxInactiveInterval()은 웹보다 큽니다.xml 우선 순위가 높음, 둘 다 설정하면 setMaxInactiveInterval ()
 
방법 1:include 파일 사용
예: 유효성 검사 파일 테스트 세션을 추가합니다.jsp
<span style="font-size:18px;"><span style="color: rgb(63, 95, 191);"><!-- </span><span style="color: rgb(63, 95, 191);">  --></span>
</span>
<span style="font-size:18px;"><%@ page language="java"contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>
<%
 
  if(session.getAttribute("user")==null)
  {
%>
  <h1> !</h1>
       3 
       <p>
        , <a href="login.jsp"> </a></p>
<%
       response.setHeader("refresh","3;URL=login.jsp");
       return;
   }
%></span>

검증이 필요한 JSP 페이지의 시작 위치에는 testSession이 포함되어 있습니다.jsp
<%@ include file="testSession.jsp"%>
 
방법2: 필터
우선, 웹에서.xml 프로필에 필터 페이지 설정
<span style="font-size:18px;"><filter> 
   <filter-name>LoginFilter</filter-name> 
   <filter-class>com.homer.LoginFilter</filter-class>   
</filter> 
 
<filter-mapping> 
   <filter-name>LoginFilter</filter-name> 
   <url-pattern>/page222.jsp</url-pattern> 
</filter-mapping> </span>

주: 현재 설정 방식은 사용자 방문 페이지 222.jsp에서 필터를 사용할 때/*,/user/* 등 디렉터리를 설정하여 대량의 웹 필터를 할 수 있습니다
 
그런 다음 LoginFilter에서java 파일에서 필터링 확인:
<span style="font-size:18px;">public class LoginFilter implements Filter { 
    public voidinit(FilterConfig arg0) throws ServletException { 
    } 
     public voiddoFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throwsIOException, ServletException { 
        HttpServletRequestrequest = (HttpServletRequest)arg0; 
       HttpServletResponse response = (HttpServletResponse)arg1; 
         
        HttpSessionsession = request.getSession(); 
        if(session.getAttribute("userinfo")== null) { 
           response.setCharacterEncoding("utf-8"); 
            PrintWriterout = response.getWriter(); 
           out.print("<script>alert(' , ...'); window.location='userlogin.html' </script>");  
           out.flush(); 
           out.close(); 
 
//         request.setAttribute("loginError", " , ..."); 
//         request.getRequestDispatcher("userlogin.html").forward(request,response); 
        } else { 
           arg2.doFilter(request, response); 
        } 
    } 
 
    @Override 
    public void destroy(){ 
    } 
}  </span>

Author:시작
Sign: 네가 아직도 시도하고 있다면 실패한 게 아니야.

좋은 웹페이지 즐겨찾기