Fa Tomcat 7.0.6 già sostenere l'annotazione SevletSercurity nella specifica servlet 3.0?
-
24-10-2019 - |
Domanda
Sono stato Tring per usare l'annotazione ServletSecurity della specifica servlet 3.0 nel Tomcat 7.0.6, ma sembra che server Tomcat non analizza l'annotazione ServletSecurity. Il codice sta seguendo,
@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);
}
}
Quindi, c'è qualcuno che ha testato l'annotazione ServletSecurity con successo in Tomcat 7? O il gatto 7 non supporta l'annotazione ServletSecurity ancora?
sono stato confuso dal il problema per pochi giorni, quindi qualcuno potrebbe capirlo per me? Ogni aiuto è apprezzato.
Soluzione
È necessario rimuovere httpMethodConstraints=@HttpMethodConstraint("GET")
Una "caratteristica" interessante nella specifica è vincoli sono O - Non E. Quindi, se si richiede /index
come GET -. Il vincolo di sicurezza passa e il vincolo rolesAllowed viene ignorato
Una libreria di terze parti come SecurityFilter [ http://securityfilter.sourceforge.net/ ] probabilmente farà un lavoro migliore a maneggevolezza vincolo rispetto a quanto previsto dal Servlet Spec.