English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Soluzione del codice dell'intercettore di annotazione per l'autenticazione del metodo utilizzato in springmvc

Recentemente, durante la scrittura di un progetto con SpringMvc, ho incontrato un problema, ovvero il problema di autenticazione del metodo, questo problema è stato risolto dopo un giorno, di seguito vediamo la soluzione

Richiesta del progetto: dove è necessario l'autenticazione, devo solo mettere un etichetta, ad esempio, solo le operazioni che possono essere eseguite dopo il login dell'utente, di solito eseguiamo la verifica dell'identità dell'utente prima di eseguire il metodo, il che aumenta inutilmente un lavoro molto grande, ripetere la ruota, con l'annotazione Java è sufficiente mettere un etichetta sopra il metodo che richiede l'autenticazione:

Soluzione:

  1、Prima di tutto, creare una classe di annotazione:

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

2、Creare un altro intercettore:

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);
			//Non è stato dichiarato il bisogno di autorizzazioni o è stato dichiarato di non verificare le autorizzazioni
			if(authPassport==null){
				return true;
			} else{
				//Esegui la tua logica di verifica delle autorizzazioni qui
				if(true){
					//Se la verifica ha avuto successo, restituisce true (qui viene scritto false per simulare la gestione del fallimento della verifica)
					System.out.println("Eseguita la verifica delle autorizzazioni");
					return true;
				} else{
					//Se la verifica fallisce
					//Ritorno alla pagina di login
					//          System.out.println("Verifica delle autorizzazioni completata");
					//          response.sendRedirect("account/login");
					return false;
				}
			}
		} else{
			return true;
		}
	}
}

3、Configurazione degli intercettori: è necessario aggiungere il seguente codice all'interno di *-servlet.xml, se hai definito un file di configurazione personalizzato, puoi anche metterlo direttamente nel file di configurazione definito

<mvc:interceptors>
	<bean class="com.benxq.shop.user.interceptors.AuthInterceptor"/>
</mvc:interceptors>

Attenzione: è necessario modificare il valore predefinito in RequestMappingHandlerMapping e aggiungere il bean RequestMappingHandlerAdapter

Riavvia Tomcat

Suggerimento: se è necessario autenticare un metodo, è sufficiente aggiungere @Auth sopra il metodo. Se è necessario autenticare tutti i metodi di una classe, è sufficiente aggiungere @Auth sopra la classe.

Allora, la domanda è: l'intercettore di metodo blocca anche le risorse statiche, quindi dobbiamo effettuare l'intercettazione dei file statici in Tomcat, come nel mio metodo di soluzione: configurazione in web.xml, chi ha buoni metodi può aggiungere il mio QQ 752432995 per discuterne insieme

<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>

Conclusione

Questo è tutto il codice di soluzione dell'annotazione intercettore di autenticazione del metodo utilizzato in SpringMVC, spero possa essere utile a tutti. Gli amici interessati possono continuare a consultare il nostro sito:

Implementazione dell'accesso single sign-on dell'intercettore SpringMVC

Implementazione dettagliata dell'intercettore SpringMVC per monitorare se la sessione è scaduta

Se c'è qualcosa di insufficiente, ti preghiamo di lasciare un messaggio per segnalarlo. Grazie per il supporto degli amici al nostro sito!

Dichiarazione: il contenuto di questo articolo è stato tratto da Internet, il diritto d'autore è dell'autore originale, il contenuto è stato contribuito autonomamente dagli utenti di Internet e caricato autonomamente, il sito web non detiene i diritti di proprietà, non è stato editato manualmente e non assume responsabilità legali correlate. Se trovi contenuti sospetti di copyright, ti preghiamo di inviare una e-mail a: notice#oldtoolbag.com (al momento dell'invio dell'e-mail, sostituisci # con @) per segnalare, fornendo prove pertinenti. Una volta verificata, il sito web rimuoverà immediatamente il contenuto sospetto di violazione del copyright.

Ti potrebbe interessare