패키지 com.skgxsn.blog_idea2017.service을; 수입 com.skgxsn.blog_idea2017.po.User; 공용 인터페이스 UserService { 사용자 checkUser (문자열 이름, 문자열 암호); }
패키지 com.skgxsn.blog_idea2017.service을; 수입 com.skgxsn.blog_idea2017.dao.UserRepository; 수입 com.skgxsn.blog_idea2017.po.User; 수입 org.springframework.beans.factory.annotation.Autowired; 수입 org.springframework.stereotype.Service; @Service 공공 클래스 UserServiceImpl의 구현의 UserService { @Autowired 개인 UserRepository의 userRepository; @Override 공공 사용자 checkUser (문자열 이름, 문자열 암호) { 사용자의 사용자 = userRepository.findByUsernameAndPassword (사용자 이름, 암호); 반환 사용자; } }
패키지 com.skgxsn.blog_idea2017.dao을; 수입 com.skgxsn.blog_idea2017.po.User; 수입 org.springframework.data.jpa.repository.JpaRepository; 공용 인터페이스 UserRepository이 확장 JpaRepository <사용자, 롱> { 사용자 findByUsernameAndPassword (문자열 이름, 문자열 암호); }
패키지 com.skgxsn.blog_idea2017.web.admin을; 수입 com.skgxsn.blog_idea2017.po.User; 수입 com.skgxsn.blog_idea2017.service.UserService; 수입 org.springframework.beans.factory.annotation.Autowired; 수입 org.springframework.stereotype.Controller; 수입 org.springframework.web.bind.annotation.GetMapping; 수입 org.springframework.web.bind.annotation.PostMapping; 수입 org.springframework.web.bind.annotation.RequestMapping; 수입 org.springframework.web.bind.annotation.RequestParam; 수입 org.springframework.web.servlet.mvc.support.RedirectAttributes; 수입javax.servlet.http.HttpSession; @Controller @RequestMapping ( "/ admin"입니다 ) 공공 클래스 인 LoginController { @Autowired 개인 UserService userService; @GetMapping 공공 문자열 loginPage () { 반환 "관리자 / 로그인" ; } @PostMapping ( "/ 로그인" ) 공공 문자열 로그인 (@RequestParam 문자열 사용자 이름, @RequestParam 문자열 암호 의 HttpSession 세션, RedirectAttributes 특성) { 사용자의 사용자 =userService.checkUser (사용자 이름, 암호); 경우 (사용자! = null의 ) { user.setPassword ( 널 ); session.setAttribute ( "사용자" 사용); 반환 "관리자 / 인덱스를" ; } 다른 { attributes.addFlashAttribute ( "메시지", "用户名和密码错误" ); 반환 "리디렉션 : / admin"을 ; } } (@GetMapping "/ 로그 아웃" ) 공공 문자열 로그 아웃 (의 HttpSession 세션) { 세션을.); 반환 "리디렉션 : / admin"을 ; } }
< DIV 클래스 = "UI 오류 미니 메시지" > </ DIV > < DIV 클래스 = "UI 부정적인 미니 메시지" 일 : 않는 = "$ {# strings.isEmpty (#messages)}" 일 : 텍스트 = "$ {# 메시지} " >用户名或密码错误</ DIV >
< 스크립트 > $ ( ' .ui.form ' ) .form ({ 필드 : { 이름 : { indentifier : ' 사용자 이름 ' , 규칙 : [{ 유형 : ' 비우기 ' , 프롬프트 ' 请输入用户名' , }] } , 비밀번호 : { indentifier : ' 비밀번호 ' , 규칙 : [{ 유형 : '비어 ' , 메시지 : ' 암호를 입력하십시오 ' , ]} } } )} </ 스크립트 >
패키지 com.skgxsn.blog_idea2017.util, 가져 오기 java.security.MessageDigest의, 가져 오기 java.security.NoSuchAlgorithmException, 공공 클래스 MD5Utils { / ** *는 MD5 암호화 클래스 * @param STR 암호화 할 문자열 * @return의 몇 미터 후 문자 문자열 * / 공공 정적 문자열 코드 (STR 문자열) { 은 try { MessageDigest 등 MD = MessageDigest.getInstance (이하 "MD5" ); md.update (str.getBytes ()); 바이트 [] = byteDigest () md.digest; INT I ; StringBuffer를 버피는 = 새로운 StringBuffer를을 ( "" ); 위한 ( INT , 오프셋 <byteDigest.length, 오프셋 = 0 오프셋 ++ ) { 난 = byteDigest [오프셋]; 있는 경우 는 (i <0 ) I + = 256 ; 경우 (I <16 ) buf.append ( "0" ); buf.append (는, Integer.toHexString (I)); } // 32位加密 복귀 buf.toString (); // 16位加密 // 창 buf.toString () 문자열 (8, 24).; } 캐치 (예외 : NoSuchAlgorithmException 전자) { e.printStackTrace (); 반환 널 (null)을 ; } } 공공 정적 무효 메인 (문자열 []를 인수) { 에서 System.out.println (코드 번호 ( "123456" )); } }
패키지 com.skgxsn.blog_idea2017.web.admin을; 수입 org.springframework.stereotype.Controller; 수입 org.springframework.web.bind.annotation.GetMapping; 수입 org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping ( "/ admin"입니다 ) 공공 클래스 BlogController { (@GetMapping "/ 블로그 목록" ) 공공 문자열 blogList () { 반환 "관리 / 블로그 목록" ; } }
// LoginInterceptor.java 패키지 com.skgxsn.blog_idea2017.Interceptor; 수입 org.springframework.web.servlet.handler.HandlerInterceptorAdapter; 수입 나오는 javax.servlet.http.HttpServletRequest; 수입 의 javax.servlet.http.HttpServletResponse; 공용 클래스 LoginInterceptor이 연장 HandlerInterceptorAdapter { @Override 공개 부울 preHandle을 (HttpServletRequest의 요청 HttpServletResponse를 응답은 대상물 핸들러)가 발생 예외 { 경우 (request.getSession (). getAttribute를 ( "사용자") ==널 (null) ) { 위해 response.sendRedirect ( "/ 관리자" ); 돌아 거짓 ; } 반환 사실 ; } } // WecConfig.java 패키지 com.skgxsn.blog_idea2017.Interceptor; 수입 org.springframework.context.annotation.Configuration; 수입 org.springframework.web.servlet.config.annotation.InterceptorRegistry; 수입 org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @Configuration 공공 클래스 WebConfig는 확장 WebMvcConfigurerAdapter을 { @Override 공공 무효 addInterceptors (InterceptorRegistry 레지스트리) { registry.addInterceptor ( 새 LoginInterceptor ()) .addPathPatterns ( "/ 관리 / **" ) .excludePathPatterns ( "/ admin"입니다 ) .excludePathPatterns ( "/ 관리자 / 로그인" ); } }