Est-tomcat 7.0.6 prend déjà en charge l'annotation SevletSercurity dans la spécification du servlet 3.0?

StackOverflow https://stackoverflow.com/questions/4789871

  •  24-10-2019
  •  | 
  •  

Question

J'étais Tring d'utiliser l'annotation ServletSecurity de spécification servlet 3.0 dans le tomcat 7.0.6, mais il semble que tomcat ne scanne pas l'annotation ServletSecurity. Le code suit,

@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);
 }

}

Donc, il y a quelqu'un qui a testé l'annotation ServletSecurity avec succès dans tomcat 7? Ou le tomcat 7 ne supporte pas encore l'annotation ServletSecurity?

Je suis confus par le problème pour quelques jours, quelqu'un pourrait figurer dehors pour moi? Toute aide est appréciée.

Était-ce utile?

La solution

Vous devez supprimer httpMethodConstraints=@HttpMethodConstraint("GET")

Une « caractéristique » intéressante dans la spécification sont ou est contraintes - pas ET. Donc, si vous demandez /index comme GET -. La contrainte de sécurité passe et la contrainte rolesAllowed est ignorée

Une bibliothèque tiers comme SecurityFilter [ http://securityfilter.sourceforge.net/ ] fera probablement un meilleur travail à la manipulation des contraintes par rapport à ce qui est prévu par les spécifications Servlet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top