>웹 프론트엔드 >JS 튜토리얼 >springmvc는 주석 인터셉터를 구현합니다.

springmvc는 주석 인터셉터를 구현합니다.

php中世界最好的语言
php中世界最好的语言원래의
2018-04-13 17:05:311392검색

이번에는 springmvc에 어노테이션 인터셉터를 구현해 보도록 하겠습니다. springmvc에서 어노테이션 인터셉터를 구현하기 위한 주의 사항은 무엇인가요? 다음은 실제 사례를 살펴보겠습니다.

최근 SpringMvc로 프로젝트를 작성할 때 메소드 인증 문제에 직면했습니다. 하루 동안 작업한 후 마침내 해결했습니다. 아래 해결 방법을 살펴보겠습니다.

프로젝트 요구사항

: 사용자 로그인으로만 수행할 수 있는 작업과 같이 인증이 필요한 경우에는 레이블만 지정하면 됩니다. 일반적으로 메서드를 실행할 때 먼저 사용자의 신원을 확인하게 됩니다. Java 주석을 사용하면 인증이 필요한 메서드에만 라벨을 붙이면 됩니다. 해결책:

  1. 먼저 주석 클래스를 만듭니다:

@Documented
@Inherited
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Auth {
  boolean validate() default true;
}

2. 또 다른 인터셉터 만들기:

public class AuthInterceptor extends BaseInterceptor{
	@Override
	  public Boolean preHandle(HttpServletRequest request,
	      HttpServletResponse response, Object handler) throws Exception {
		if(handler.getClass().isAssignableFrom(HandlerMethod.class)){
			Auth authPassport = ((HandlerMethod) handler).getMethodAnnotation(Auth.class);
			//没有声明需要权限,或者声明不验证权限
			if(authPassport==null){
				return true;
			} else{
				//在这里实现自己的权限验证逻辑
				if(true){
					//如果验证成功返回true(这里直接写false来模拟验证失败的处理)
					System.out.println("执行权限校验了");
					return true;
				} else{
					//如果验证失败
					//返回到登录界面
					//          System.out.println("权限校验对了");
					//          response.sendRedirect("account/login");
					return false;
				}
			}
		} else{
			return true;
		}
	}
}

3. 인터셉터 구성: *-servlet.xml에 다음 코드를 추가해야 합니다.

구성 파일

을 사용자 정의한 경우 ​​정의한 구성 파일

<mvc:interceptors>
	<bean class="com.benxq.shop.user.interceptors.AuthInterceptor"/>
</mvc:interceptors>
에 직접 넣을 수도 있습니다. 참고: 기본값을 RequestMappingHandlerMapping으로 변경하고 RequestMappingHandlerAdapter

빈을 추가해야 합니다. Tomcat을 다시 시작하세요.

참고 사항: 메소드에 인증이 필요한 경우 해당 메소드에 @Auth만 표시하면 됩니다. 클래스의 모든 메소드에 인증이 필요한 경우 클래스에 @Auth만 표시하면 됩니다.

그러면 메소드 인터셉터가 정적 리소스를 함께 가로챌 것입니다. 예를 들어, 내 솔루션은 web.xml에서 구성하는 것입니다. 나에게 752432995

<servlet-mapping>
   <servlet-name>default</servlet-name>
   <url-pattern>*.jpg</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
   <servlet-name>default</servlet-name>
   <url-pattern>*.png</url-pattern>
 </servlet-mapping>

와 토론하세요. 이 기사의 사례를 읽으신 후 방법을 마스터하셨다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사에 주목하세요.

추천 도서:

PHP에서 JSONAPI를 사용하는 방법


zTree의 트리 메뉴를 사용하는 단계에 대한 자세한 설명


위 내용은 springmvc는 주석 인터셉터를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.