1 ... spring_security.xml
1 <XML 버전 = "1.0"인코딩 = "UTF-8"?> 2 <콩의 xmlns = "http://www.springframework.org/schema/beans" 3 의 xmlns :이 xsi = "HTTP : // WWW. w3.org/2001/XMLSchema-instance " 4 개 의 xmlns : 보안 ="http://www.springframework.org/schema/security " 5 는 xsi :의 schemaLocation ="http://www.springframework.org/schema/beans 6 HTTP : // www.springframework.org/schema/beans/spring-beans.xsd 7 HTTP : // www.springframework.org/schema/security 8 HTTP : // www.springframework.org/schema/security/spring- security.xsd "> 9 <! - 정적 리소스를 차단하지 않습니다 -> 10 <보안 : HTTP 패턴 = "/ CSS / **"보안 = "NONE"> </ 보안 : HTTP> 11 <보안 : HTTP 패턴 = "/ IMG / **"보안 = "NONE"> </ 보안 : HTTP> (12) <보안 : HTTP 패턴 = "/ 플러그인 / **"보안 = "없음"> </ 보안 : HTTP> (13) <! -不拦截登录不拦截오류 -> (14) <보안 : HTTP 패턴 = " /login.jsp "보안 ="NONE "> </ 보안 : HTTP> 15 <보안 : HTTP 패턴 ="/ error.jsp "보안 ="NONE "> </ 보안 : HTTP> 16 <보안 : HTTP 패턴 =" /favicon.ico "보안 ="없음 "> </ 보안 : HTTP> 17 <! - 차단 규칙 -> 18 <! - 구성 규칙을 가로 챈 19 오토의 자신의 페이지를 사용하는 설정을 (20) 사용 - SpEL을 발현 여부를 식 (21)은 -> (22)는 <보안 : HTTP 자동 설정 "거짓에"사용 - 표현 => "참으로"= (23)가 <- 구성, 최저 주소 ->! 24 <보안 : intercept- 패턴 = URL "/ **"액세스 = "ROLE_USER"> </ 보안 : 가로 챕니다-URL> (25) <- 특정 페이지로 이동하려면 구성 ->! 26 <보안 : 형상 - 로그인 27 로그인 페이지 = "/login.jsp" 28 로그인 처리-URL = "/ 로그인" 29 기본 -target-URL = "/를 index.jsp를" 30 인증 실패-URL = "/를의 login.jsp" 31 > </ 보안 : 폼 로그인> 32 <! -关闭跨域请求-> 33 <보안 : 비활성화 = "true"로 CSRF> </ 보안 : CSRF> (34) <-退出登录! -> 35 <보안 : 로그 아웃 무효화 세션 = "true"로 로그 아웃 - URL을 = "/ 로그 아웃"로그 아웃 - 성공 URL을 = "/의 login.jsp"> </ 보안 : 로그 아웃> 36 </ 보안 : HTTP> 37 <! -自带账户密码-> 38 <보안 : 인증 관리자> 39 <보안 : 인증 공급자 사용자 서비스 REF = "sysUserService"> 40 <- <보안! 암호 엔코더 REF = "되는 PasswordEncoder"> </ 보안 : 암호 인코더> -> 41 < ! - <보안 : 사용자 서비스> -> (42)<! - & LT; & ndash를临时账户密码不加密& ndash를한다! -> 43 <- <보안! 사용자 이름 = "관리자"암호 = "{무 조작} 관리"기관 = "ROLE_USER을"> < / 보안 : 사용자> -> 44 <! - </ 보안 : 사용자 서비스> -> 45 </ 보안 : 인증 공급자> 46 </ 보안 : 인증 관리자> 47 <빈 ID = "되는 PasswordEncoder" 클래스 = "org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"> </ 빈> 48 </ 콩>
2 ....의 web.xml
1 <! DOCTYPE 웹 - 응용 프로그램 PUBLIC 2 "- // 썬 마이크로 시스템즈, Inc.//DTD 웹 응용 프로그램 2.3 // EN" 3 "http://java.sun.com/dtd/web-app_2_3.dtd"> 4 5 <웹 응용> 6 <표시 이름> 아키 만들어진 웹 애플리케이션 </ 디스플레이 이름> 7 <상황 PARAM> 8 <PARAM 이름>는 contextConfigLocation </ PARAM 이름> 9 <PARAM 값> 클래스 경로 * : 애플리케이션 컨텍스트 * .xml 또는 클래스 경로 spring_security.xml </ PARAM 값> 10 </ 문맥 PARAM> 11 <필터> 12 <필터 이름> CharacterEncodingFilter </ 필터 이름> 13 <필터 - 클래스 > org.springframework.web.filter.CharacterEncodingFilter </ 필터 - 클래스 > 14 <INIT-PARAM> 15 <PARAM 이름> 부호화 </ PARAM 이름> 16 <PARAM 값> UTF-8 </ PARAM 값> 17 </ INIT-PARAM> 18 </ 필터> 19 <필터> 20 <필터 이름> springSecurityFilterChain </ 필터 이름> 21 <필터 - 클래스 > org.springframework.web.filter.DelegatingFilterProxy </ 필터 - 클래스 > 22 </ 필터> 23 <필터 매핑> 24 <필터 이름> CharacterEncodingFilter </ 필터 이름> (25) <URL 패턴> / * </ URL 패턴> 26 </ 필터 매핑> (27) <! - 봄 보안的过滤器配置-> 28 (29) <필터 매핑> 30 <필터 이름> springSecurityFilterChain </ 필터 이름> 31 <URL 패턴> / * </ URL 패턴> 32 </ 필터 매핑> 33 <수신기> 34 <리스너 클래스> 조직 .springframework.web.context.ContextLoaderListener </ 리스너 클래스> 35 </ 청취자> 36 <서블릿> 37 <서블릿 이름>의 DispatcherServlet </ 서블릿 이름> 38 <서블릿 클래스> org.springframework.web.servlet.DispatcherServlet </ 서블릿 클래스> 39 <INIT-PARAM> 40 <PARAM 이름>는 contextConfigLocation </ param- 이름> 41 <PARAM 값> 클래스 경로 * spring_mvc.xml </ PARAM 값> 42 </ INIT-PARAM> 43 <! -按照톰캣顺序加载-> 44 <시작시로드> 1 </ 시작시로드> 45 </ 서블릿> 46 <서블릿 매핑> 47 <서블릿 이름>의 DispatcherServlet </ 서블릿 이름> 48 <URL 패턴> / </ URL 패턴> 49 </ 서블릿 매핑> 50 <시작 파일리스트> 51 <시작 파일> index.html을 </ 시작 파일> 52 <시작 파일>있는 index.htm </ 시작 파일> 53 <시작 파일> index.jsp를 </ 시작 파일> 54 <시작 파일> default.html을 </ 시작 파일> 55 <시작 파일> default.htm으로 </ 시작 파일> 56 <시작 파일> Default.jsp를 </ 환영 파일> 57 </ 환영 - 파일 목록> 58 </ 웹 응용 프로그램>
3 ... MD5 자바 코드 암호화 암호
. (1) 패키지 com.wsc.md5; 2 . 3 가져 java.math.BigInteger에] . (4) 수입 java.security.MessageDigest의] . 5 오기 java.security.NoSuchAlgorithmException] . 6 (7). 공용 클래스 MD5Utils { 8. / ** 9. * 알고리즘이 사용되는 MD5 암호화 10 * / . 11 공개 정적 {문자열 MD5 (문자열 평문) (12)는 바이트 [] = secretBytes 널 ; 13 인 은 try { 14 secretBytes = MessageDigest.getInstance ( "MD5") .digest ( 15 plainText.getBytes ()); 16 } 캐치 (경우 NoSuchAlgorithmException E) { 17. 드로 새로운 새 말고 RuntimeException ( "아니오 MD5 알고리즘!" ); 18된다 } . 19 문자열 md5code = 새로운 새 를 BigInteger (1 secretBytes)로 .toString (. 16); // 진수 20 // 생성 수가 32 미만이면, 상기 0 채워야 21 인 위해 ( int로 I = 0; I 32 <- md5code.length ()를, I는 ++ ) { 22은 md5code = "0 "+ md5code; 23이다 } 24 반환md5code; 25 } 26 27 공공 정적 무효 메인 (문자열 []에 args) { 28 에서 System.out.println (MD5 ( "123" )); 29 } 30 31 }
4 ... 평문 패스워드를 구하는
1 // MD5 2 @Autowired 3 되는 PasswordEncoder되는 PasswordEncoder; 4 @RequestMapping ( "추가 /" ) 5 공개 문자열 (SYSUSER의 SYSUSER) 추가 { 6 7 // 获取明文密码 8 // 문자열 암호 sysuser.getPASSWORD = (); 9 // // 对明文密码加密 10 // 문자열 md5password = passwordEncoder.encode (암호); 11 // sysuser.setPASSWORD (md5password); 12 sysuserService.add (SYSUSER); 13 반환"리디렉션 : / 사용자 / pageChange을" ; 14 }