SpringBoot 프레임 워크 : 관리자

SpringBoot 프레임 워크 : 관리자



 

관리자 로그인

  • 로그인 페이지와 페이지 관리자 구축
    • 관리 홈 : 배경 페이지 디자인 블로그 목록 매니저에 따르면 관리하기
    • 관리자 로그인 페이지 : Semantic UI거기 공식 웹 사이트 로그인 폼 레이아웃 옵션, 당신은 빛나는 직접 쓸 수 있습니다
  • UserServiceUserRespository
    • 에서는 com.xxx케이스 새로운 패키지 service가방, 상기 서비스 로직의 처리와 관련된 문서를 저장하기 위해 사용
    • 새로운 호출 UserService인터페이스 파일 ( Interface사용자 인터페이스 정의 서비스는)
      패키지 com.skgxsn.blog_idea2017.service을; 
      
      수입 com.skgxsn.blog_idea2017.po.User; 
      
      공용  인터페이스 UserService { 
      
          사용자 checkUser (문자열 이름, 문자열 암호); 
      }
    • 구현은 새로운 패키지와 인터페이스는 UserServiceImpl.java인터페이스를 구현하는 데 사용
      패키지 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.xxx새로운 패키지 가방에서 dao상호 작용 데이터베이스에 대한이 새로운 패킷 UserRespository인터페이스 :
      패키지 com.skgxsn.blog_idea2017.dao을; 
      
      수입 com.skgxsn.blog_idea2017.po.User;
      수입 org.springframework.data.jpa.repository.JpaRepository; 
      
      공용  인터페이스 UserRepository이 확장 JpaRepository <사용자, 롱> { 
      
          사용자 findByUsernameAndPassword (문자열 이름, 문자열 암호); 
      }
  • LoginController실현 착륙
    • web새로운에서 패키징 admin새로운에서, 패키지 LoginContorller.java관리자 로그인을 달성하기 위해 :
      패키지 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"을 ; 
          } 
      }
    • 에서 login.html로그인 오류 메시지를 추가 :
      < DIV 클래스 = "UI 오류 미니 메시지" > </ DIV > 
                          < DIV 클래스 = "UI 부정적인 미니 메시지" 일 : 않는 = "$ {# strings.isEmpty (#messages)}" 일 : 텍스트 = "$ {# 메시지} " >用户名或密码错误</ DIV >
    • 정의 script:
      < 스크립트 > 
          $ ( ' .ui.form ' ) .form ({ 
              필드 : { 
                  이름 : { 
                      indentifier : ' 사용자 이름 ' , 
                      규칙 : [{ 
                          유형 : ' 비우기 ' , 
                          프롬프트 ' 请输入用户名' , 
                      }] 
                  } , 
                  비밀번호 : { 
                      indentifier : ' 비밀번호 ' , 
                      규칙 : [{ 
                          유형 : '비어 ' , 
                          메시지 : ' 암호를 입력하십시오 ' , 
                      ]} 
                  } 
              } 
          )} 
      </ 스크립트 >
  • MD5암호화
    • 에서 com.xxx의 새로운 패킷 Util도구를 저장, 새의 패킷 MD5Utils.java세트 암호화 :
      패키지 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" )); 
          } 
      }
    • 에서는 판독 기준 시간 전달 방법이 구현 될 수있는 암호화UserServiceImpl.javaUserCheckMD5Utils.code(password)MD5
  • 로그 인터셉터
    • 방지하기 위해 사람들이 그렇게 로그온 인터셉터를 추가, 쉽게 방문 페이지를 블로그 할 수있는 프로젝트 관리의 내용을 알고, 사용자 설정 필터
    • 에서 com.xxx.erb.admin새 패키지의 경우 BlogController:
      패키지 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 () {
               반환 "관리 / 블로그 목록" ; 
          } 
      }
    • 에서 com.xxx패키지에서 새로운 패키지 Interceptor패키지, 빌드 LoginInterceptor.java, WecConfig.java파일 인터셉터 착륙의 구체적인 구현을 설정하는 데 사용됩니다 :
      // 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 ( "/ 관리자 / 로그인" ); 
          } 
      }

       

 

추천

출처www.cnblogs.com/skygrass0531/p/12551250.html