So erstellen Sie eine Spring Interceptor für Spring RESTful-web-services
Habe ich einige Spring RESTful (RestControllers) web-services ohne web.xml und ich bin mit Spring boot um die Dienste zu starten.
Möchte ich hinzufügen, Autorisierungs-Ebene für die web-services und wollten route, die alle http-requests auf ein front-controller, bevor Sie tatsächlich den Aufruf der web service selbst. (Ich habe einen code zu simulieren Sitzungen Verhalten an den autherisation Ebene, für die überprüfung eines Benutzers, basierend auf einem generierten key, den ich senden mit jedem httpRequest aus dem client).
Ist es irgendein Standard-Spring-Lösung zur Weiterleitung aller Anfragen an einen filter /front-controller?
Vielen Dank im Voraus,
Praneeth
Bearbeiten:
Hinzufügen mein code
Controller:
`
@RestController
public class UserService {
UserDAO userDAO = new UserDAO();
@RequestMapping(value="/login", method = RequestMethod.POST)
@LoginRequired
public String login(@RequestParam(value="user_name") String userName, @RequestParam(value="password") String password, HttpServletRequest request){
return userDAO.login(userName, password);
}
}`
Interceptor:
`
public class AuthenticationInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println("In Interceptor");
//return super.preHandle(request, response, handler);
return true;
}
@Override
public void postHandle( HttpServletRequest request, HttpServletResponse response,
Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("---method executed---");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
Object handler, Exception ex) throws Exception {
System.out.println("---Request Completed---");
}
}
`
Schnittstelle.
`
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface LoginRequired {
}
`
InformationsquelleAutor Praneeth Reddy | 2016-07-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Folgenden Schritte ergriffen werden, um die Umsetzung des interceptor-mit Feder:
Implementierung eines interceptor-Klasse, die sich HandlerInterceptorAdapter Klasse. Folgenden wird, wie der code Aussehen könnte:
Implementieren eine AppConfig-Klasse, oder fügen Sie die addInterceptors in einem der vorhandenen Configuration-Klasse. Hinweis: der Pfad Muster angegeben, die mit den LoginInterceptor Instanz
Implementieren die controller-Methode wie folgt:
HandlerMethod
übergeben IhreLoginInterceptor
?WebMvcConfigurerAdapter
ist jetzt veraltet. ImplementierenWebMvcConfigurer
statt.InformationsquelleAutor Ajitesh
hier ein Beispiel Abfangjäger :
Können wir erstellen eine Anmerkung :
Und dann auf controller, wir hatten diese Anmerkung :
Dies ist nur eine Vorlage/Beispiel, um Ihnen eine Idee.
Ich hoffe, dies wird Ihnen helfen.
Sie überschreiben müssen
addInterceptors
Methode inWebMvcConfigurer
. Auch kommentieren Sie Ihre Klasse mit@Configuration
InformationsquelleAutor Pracede
Gibt es eine Standard-Lösung für solche Dinge.
spring security. Und Sie werden nur haben, um etwas umzusetzen, wie:
Abhängigkeit für es ist:
InformationsquelleAutor strash
Sollten Sie dies hinzufügen regsiter Ihre Abfangjäger
InformationsquelleAutor Edgar Orozco
Den standard-Weg ist die Implementierung von Spring Security.
Also alle anderen Anträge, die mit einem übereinstimmen, authentifiziert werden automatisch und senden 401-Fehlercode, falls nicht. Es ist ziemlich einfach.
InformationsquelleAutor Shehan Simen