원문: 이 기사는 다른 곳에서 가져온 것이 아닙니다. 재인쇄하려면 블로거에게 문의하세요.
모든 사람이 로그인하면 로그인 상자가 나타날 것이라고 믿습니다. 다음 번에 로그인해야 합니다. 월간 무료 로그인과 유사한 옵션입니다. 이 블로그 게시물에서는 구현 방법을 설명합니다. 메모 모음으로 간주할 수 있습니다. 지적해 주세요
왜 셀프 로그인을 한 번이라고 하시나요? 특정 페이지에 접속할 때 처음 자동 로그인에 실패하고 다음 방문 시 다시 자동 로그인 과정을 거치면, 무한루프가 발생하게 됩니다.
이 블로그 게시물의 코드 예제 프레임워크는 Spring MVC입니다. 다음은 이 기능을 구현하는 데 필요한 지식을 설명합니다. 쿠키 및 필터
1 쿠키란?: 쿠키는 웹 애플리케이션에 대한 사용자를 저장합니다. 관련 정보는 유용한 접근 방식을 제공합니다. 예를 들어, 사용자가 귀하의 사이트를 방문할 때 쿠키를 사용하여 사용자의 기본 설정이나 기타 정보를 저장하면 다음 번에 사용자가 귀하의 사이트를 방문할 때 애플리케이션이 이전에 저장된 정보를 검색할 수 있습니다.
쿠키 저장 방법과 쿠키 삭제 방법을 살펴보겠습니다
- 쿠키 저장하기
String newUserName = null; try { newUserName = URLEncoder.encode(username, "UTF-8");//把用户名转码,防止用户名是中文,cookies保存中文取出会乱码 } catch (UnsupportedEncodingException e) { e.printStackTrace(); } Cookie nameCookie = new Cookie("username", newUserName); String pwdMd5Cook = MD5Util.MD5(Pwd); Cookie pwdCookie = new Cookie("pwd", pwdMd5Cook);// 保存加密后的密码 nameCookie.setMaxAge(60 * 60 * 24 * 365);// 用户名保存一年 pwdCookie.setMaxAge(60 * 60 * 24 * 30);// 密码保存30天 // 发送Cookie信息到浏览器 response.addCookie(nameCookie); response.addCookie(pwdCookie);
주의할 가치가 있습니다. 쿠키를 저장하는 것과 마찬가지로 동일한 제어 레이어에 있어야 합니다. 그렇지 않으면 저장된 쿠키를 찾을 수 없으며 삭제할 수 없습니다.Cookie cookie = new Cookie("pwd", null);
cookie.setMaxAge(0);// 删除密码cookie
response.addCookie(cookie);
구현 방법:
Filter인터페이스를 상속하고 해당 doFilter 메서드를 구현합니다. 작성된 필터 클래스를 웹에 등록합니다. 전달된 로고(
IsAutomaticLogin), 이 로고는 자동 로그인 중에 저장됩니다(성공 또는 실패에 관계 없음)
<filter>指定一个过滤器。 <filter-name>用于为过滤器指定一个名字,该元素的内容不能为空。 <filter-class>元素用于指定过滤器的完整的限定类名。 <init-param>元素用于为过滤器指定初始化参数,它的子元素<param-name>指定参数的名字,<param-value>指定参数的值。 在过滤器中,可以使用FilterConfig接口对象来访问初始化参数。 <filter-mapping>元素用于设置一个 Filter 所负责拦截的资源。一个Filter拦截的资源可通过两种方式来指定:Servlet 名称和资源访问的请求路径 <filter-name>子元素用于设置filter的注册名称。该值必须是在<filter>元素中声明过的过滤器的名字 <url-pattern>设置 filter 所拦截的请求路径(过滤器关联的URL样式) <servlet-name>指定过滤器所拦截的Servlet名称。 <filter> <filter-name>suicaiFilter</filter-name> <filter-class>com.suicai.filter.suicaiFilter</filter-class> </filter> <filter-mapping> <filter-name>suicaiFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>