English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Bei der Arbeit an einem Projekt mit SpringMvc ist mir ein Problem begegnet, nämlich die Autorisierung von Methoden. Dieses Problem habe ich einen Tag lang gelöst und werde unten die Lösungsmethode zeigen.
项目需求:需要鉴权的地方,我只需要打个标签即可,比如只有用户登录才可以进行的操作,一般情况下我们会在执行方法时先对用户的身份进项校验,这样无形中增加了非常大的工作量,重复造轮子,有了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("Rechteprüfung ausgeführt"); return true; } else{ //如果验证失败 //返回到登录界面 // System.out.println("Rechteprüfung erfolgreich"); // response.sendRedirect("account/login"); return false; } } } else{ return true; } } }
3、配置拦截器:需要在*-Fügen Sie den folgenden Code in Ihre servlet.xml ein. Wenn Sie eine benutzerdefinierte Konfigurationsdatei haben, können Sie ihn auch direkt in diese Datei einfügen.
<mvc:interceptors> <bean class="com.benxq.shop.user.interceptors.AuthInterceptor">/> </mvc:interceptors>
Hinweis: Sie müssen den Standardwert in RequestMappingHandlerMapping ändern und den Bean von RequestMappingHandlerAdapter hinzufügen
Starten Sie Tomcat neu
Tipp: Wenn Sie die Authentifizierung einer Methode benötigen, fügen Sie einfach @Auth hinzu. Wenn Sie die Authentifizierung aller Methoden einer Klasse benötigen, fügen Sie @Auth in der Klasse hinzu.
Die Frage ist, ob der Methoden-Interceptor auch statische Ressourcen abfängt. Wir müssen also im Tomcat die Interception von statischen Dateien durchführen, wie z.B.: Meine Lösung ist die Konfiguration in web.xml. Wenn Sie eine bessere Methode haben, können Sie mich auch QQ hinzufügen752432995Einige Überlegungen
<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>
Zusammenfassung
Das ist der gesamte Inhalt der Code-Lösung für den Annotation Interceptor von SpringMVC zur Methode Authentifizierung in diesem Artikel. Ich hoffe, es hilft Ihnen weiter. Interessierte Freunde können die Website weiter besuchen:
Implementierung von Single Sign-On durch SpringMVC Interceptor
Detaillierte Erklärung zur Implementierung von SpringMVC Interceptor, um zu überprüfen, ob die Session abgelaufen ist
Bitte hinterlassen Sie Kommentare, wenn Sie Verbesserungen vorschlagen. Vielen Dank, dass Sie die Unterstützung dieser Website zeigen!
Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet übernommen und gehört dem jeweiligen Urheber. Der Inhalt wurde von Internetnutzern freiwillig eingereicht und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht von Hand bearbeitet. Diese Website übernimmt keine rechtlichen Verantwortlichkeiten. Wenn Sie urheberrechtlich geschützte Inhalte entdecken, sind Sie herzlich eingeladen, eine E-Mail an notice#w zu senden.3Anmerkung: Bitte ersetzen Sie # durch @, wenn Sie eine E-Mail senden, um eine Beschwerde einzureichen, und fügen Sie relevante Beweise bei. Sobald die Beschwerde bestätigt wird, wird diese Website die beanstandeten urheberrechtlichen Inhalte sofort löschen.