Heim > Web-Frontend > js-Tutorial > Hauptteil

springmvc implementiert den Annotation-Interceptor

php中世界最好的语言
Freigeben: 2018-04-13 17:05:31
Original
1388 Leute haben es durchsucht

Dieses Mal werde ich Ihnen SpringMVC zur Implementierung von Annotation Interceptor vorstellen. Was sind die Vorsichtsmaßnahmen für SpringMVC zur Implementierung von Annotation Interceptor?

Als ich kürzlich ein Projekt mit SpringMvc schrieb, stieß ich auf ein Problem, nämlich das Authentifizierungsproblem der Methode. Ich habe einen Tag lang an diesem Problem gearbeitet und es schließlich gelöst bei der Lösung unten

Projektanforderungen: Wenn eine Authentifizierung erforderlich ist, muss ich sie nur kennzeichnen. Beispielsweise werden Vorgänge, die nur durch Benutzeranmeldung ausgeführt werden können, normalerweise ausgeführt, wenn wir die Methode ausführen Die Identität des Benutzers erhöht den Arbeitsaufwand und erfindet das Rad neu. Bei Java-Annotationen müssen Sie nur eine Bezeichnung für die Methode anbringen, die eine Authentifizierung erfordert:

Lösung:

 1. Erstellen Sie zunächst eine Annotationsklasse:

@Documented
@Inherited
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Auth {
  boolean validate() default true;
}
Nach dem Login kopieren
2. Erstellen Sie einen weiteren Interceptor:

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;
		}
	}
}
Nach dem Login kopieren
3. Konfigurieren Sie den Interceptor: Sie müssen den folgenden Code zu *-servlet.xml hinzufügen. Wenn Sie die

Konfigurationsdatei angepasst haben, können Sie ihn auch direkt in die von Ihnen definierte Konfigurationsdatei

Hinweis: Sie müssen die Standardeinstellung in „RequestMappingHandlerMapping“ ändern und die Bean von „RequestMappingHandlerAdapter“ hinzufügen
<mvc:interceptors>
	<bean class="com.benxq.shop.user.interceptors.AuthInterceptor"/>
</mvc:interceptors>
Nach dem Login kopieren

Starten Sie einfach Tomcat neu,

Warme Erinnerung: Wenn eine Methode eine Authentifizierung erfordert, müssen Sie nur @Auth für die Methode markieren. Wenn alle Methoden der Klasse eine Authentifizierung erfordern, müssen Sie nur @Auth für die Klasse markieren.

Dann stellt sich die Frage, ob der Methoden-Interceptor die statischen Ressourcen in Tomcat abfangen soll. Meine Lösung besteht darin, sie in web.xml zu konfigurieren Besprechen Sie es mit 752432995

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website.
<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>
Nach dem Login kopieren

Empfohlene Lektüre:

So verwenden Sie JSONAPI in PHP


Detaillierte Schritte zur Verwendung des Baummenüs von zTree


Das obige ist der detaillierte Inhalt vonspringmvc implementiert den Annotation-Interceptor. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage