최근 SpringMVC로 프로젝트를 작성할 때이 방법의 인증 문제인 문제가 발생했습니다. 이 문제는 하루 동안 해결되었고 마침내 해결되었습니다. 아래 솔루션을 살펴 보겠습니다.
프로젝트 요구 사항 : 인증이 필요한 경우 사용자 로그인에서 수행 할 수있는 작업만으로도 레이블을 지정하면됩니다. 일반적으로 메소드를 실행할 때 먼저 사용자의 ID 입력을 확인하여 많은 워크로드가 증가하고 휠을 재현합니다. Java 주석을 사용하면 인증이 필요한 메소드에만 레이블을 지정하면됩니다.
해결책:
1. 먼저 주석 클래스를 만듭니다.
@documented@inherited@target ({elementtype.method, elementType.type})@resentent (rendentePolicy.runtime) public @Interface auth {boolean validate () 기본값;}2. 다른 인터셉터 생성 :
Public Class Authinterceptor는 Baseinterceptor를 확장합니다 {@override public boolean prehandle (httpservletrequest 요청, httpservletresponse 응답, 객체 핸들러)은 예외 {if (handler.getclass (). isassignablefrom (handlermethod.class)) {auth authpassport = (handlermethpport =). handler) .getMethodAnnotation (auth.class); // 허가가 선언되지 않거나 허가가 표시되지 않거나 (authpassport == null) {return true;} else {// 자신의 권한 검증 논리를 구현하는 경우 (true) {// reture execution of execution of execution of execution of verations). 확인 "); return;} else {// 확인이 실패하면 // 로그인 인터페이스로 돌아 가기 // system.out.println ("권한 확인은 정확합니다 "); // response.sendRedirect ("acc3. 인터셉터 구성 : *-servlet.xml에 다음 코드를 추가해야합니다. 구성 파일을 사용자 정의하면 정의한 구성 파일에 직접 넣을 수도 있습니다.
<mvc : 인터셉터> <bean/> </mvc : 인터셉터>
참고 : 기본값을 requestMappingHandlerMpapping으로 변경하고 requestMappingHandlerAdapter의 Bean을 추가해야합니다.
Tomcat을 다시 시작하십시오.
따뜻한 알림 : 메소드에 대한 인증이 필요한 경우 메소드에 @auth 만 입력하면됩니다. 클래스의 모든 방법에 대한 인증이 필요한 경우 클래스에 @Auth를 입력하면됩니다.
따라서 문제는 메소드 인터셉터가 정적 자원을 함께 차단한다는 것입니다. 다음과 같은 Tomcat의 정적 파일을 가로 채어야합니다. 내 솔루션은 web.xml에서 구성하는 것입니다. 좋은 방법이 있다면 QQ 752432995를 추가하여 논의 할 수도 있습니다.
<servlet-mapping> <servlet-name> default </servlet-name> <Url-pattern>*
요약
위는 메소드 인증을 위해 SpringMVC에 사용되는 주석 인터셉터의 솔루션 코드에 대한이 기사의 전체 내용입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구들은이 사이트를 계속 참조 할 수 있습니다.
SpringMVC 인터셉터는 단일 사인온을 구현합니다
SpringMVC 인터셉터가 모니터링 세션이 만료되는지 여부에 대한 자세한 설명
단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!