Unterstützt Tomcat 7.0.6 bereits die Annotation von SevletSercurity in der Diener 3.0 -Spezifikation?
-
24-10-2019 - |
Frage
Ich habe mich mit der ServletSecurity -Annotation der SERVLAT 3.0 -Spezifikation in der Tomcat 7.0.6 verwendet, aber es scheint, dass Tomcat Server die ServletSecurity -Annotation nicht scannt. Der Code folgt,
@WebServlet(name="IndexServlet",urlPatterns={"/index"})
@DeclareRoles("ROLE_ADMIN")
@ServletSecurity(value=@HttpConstraint(rolesAllowed="ROLE_ADMIN"),httpMethodConstraints=@HttpMethodConstraint("GET"))
public class IndexServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("/WEB-INF/jsp/main.jsp").forward(request, response);
}
}
Gibt es also jemanden, der die ServletSecurity -Annotation in Tomcat 7 erfolgreich getestet hat? Oder der Tomcat 7 unterstützt die ServletSecurity -Annotation noch nicht?
Ich war ein paar Tage lang verwirrt über das Problem, also könnte es jemand für mich herausfinden? Jede Hilfe wird geschätzt.
Lösung
Sie müssen entfernen httpMethodConstraints=@HttpMethodConstraint("GET")
Ein interessantes "Feature" in der Spezifikation ist, dass Krebs sind oder - nicht und. Also, wenn Sie anfordern /index
Als Get - die Sicherheitsbeschränkung vergeht und die Rollenbeschränkungen werden ignoriert.
Eine Drittanbieterbibliothek wie SecurityFilter [ http://securityfilter.sourceforge.net/ ] wird wahrscheinlich eine bessere Arbeit bei der Bearbeitung von Einschränkungen leisten als die von der Servlet -Spezifikation bereitgestellten.