Kürzlich habe ich beim Schreiben von Projekten mit SpringMVC auf ein Problem gestoßen, nämlich das Authentifizierungsproblem der Methode. Dieses Problem wurde für einen Tag gelöst und schließlich gelöst. Schauen wir uns die Lösung unten an.
Projektanforderungen: Wenn eine Authentifizierung erforderlich ist, muss ich sie nur kennzeichnen, z. B. nur die Operation, die vom Benutzeranmeldung durchgeführt werden kann. Im Allgemeinen überprüfen wir zunächst die Identitätseingabe des Benutzers bei der Ausführung der Methode, die unsichtbar viel Arbeitslast erhöht und das Rad neu erstellt. Mit Java -Anmerkungen müssen Sie sie nur für die Methode kennzeichnen, die eine Authentifizierung erfordert:
Lösung:
1. Erstellen Sie zuerst eine Annotationsklasse:
@Documented@erittened@target ({elementtype.method, elementtype.type})@retention (retentionPolicy.Runtime) public @Interface auth {boolean validate () Standard true;}2. Erstellen Sie einen anderen 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); // Es wird keine Erlaubnis deklariert, oder es wird keine Erlaubnis als nicht verifiziert, wenn (AuthPassport == null) {return true;} else {// Implementieren Sie Ihre eigene Berechtigungsüberprüfung hier, wenn (wahr) {//, falls die Verifizierung erfolgreich ist. Überprüfung "); true;} else {// Wenn die Bestätigung fehlschlägt // zurück zur Anmeldeschnittstelle // system.out.println (" Berechtigungsüberprüfung ist korrekt "); // response.sendredirect (" Konto/Login ");3. Konfigurieren Sie den Interceptor: Sie müssen den folgenden Code zu *-servlet.xml hinzufügen. Wenn Sie die Konfigurationsdatei anpassen, können Sie sie auch direkt in die von Ihnen definierte Konfigurationsdatei einfügen.
<MVC: Interceptors> <bean/> </mvc: interceptors>
Hinweis: Sie müssen die Standardeinstellung in RequestMapingHandlermaping ändern und die Bean von RequestMapingHandlerAdapter hinzufügen
Starten Sie einfach Tomcat neu.
Warm Erinnerung: Wenn Sie eine Authentifizierung für eine Methode benötigen, müssen Sie nur @Auth für die Methode eingeben. Wenn Sie eine Authentifizierung für alle Methoden einer Klasse benötigen, müssen Sie nur @Auth in der Klasse eingeben.
Das Problem ist also, dass der Methode Interceptor statische Ressourcen zusammenfassen. Wir müssen statische Dateien in Tomcat abfangen, wie zum Beispiel: Meine Lösung ist es, sie in web.xml zu konfigurieren. Wenn Sie eine gute Methode haben, können Sie mich auch QQ 752432995 hinzufügen, um darüber zu diskutieren.
<Servlet-Mapping> <Servlet-name> Standard </Servlet-name> <URL-PATTERN>*. JPG </URL-PATTERN> </Servlet-Mapping> <Servlet-Mapping> <Servlet-name> Standard </Servlet-Name> <url-pattern>*.
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels über den Lösungscode des Annotation Interceptor, der für SpringMVC für die Methodenauthentifizierung verwendet wird. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf diese Seite verweisen:
SpringMVC Interceptor implementiert einzelne Anmelde
Detaillierte Erläuterung, ob der SpringMVC Interceptor implementiert, die Überwachungssitzung ausgeht
Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!