1

我试图在 tomcat 7.0.6 中使用 servlet 3.0 规范的 ServletSecurity 注释,但似乎 tomcat 服务器不扫描 ServletSecurity 注释。代码如下,

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

}

那么有没有人在tomcat 7中成功测试过ServletSecurity注解呢?还是 tomcat 7 还不支持 ServletSecurity 注解?

我被这个问题困扰了几天,所以有人可以帮我解决这个问题吗?任何帮助表示赞赏。

4

1 回答 1

1

你需要删除httpMethodConstraints=@HttpMethodConstraint("GET")

规范中一个有趣的“功能”是约束是 OR - 不是 AND。因此,如果您/index作为 GET 请求 - 安全约束通过并且角色允许约束被忽略。

与 Servlet Spec 提供的相比,像 SecurityFilter [ http://securityfilter.sourceforge.net/ ] 这样的第三方库在约束处理方面可能会做得更好。

于 2011-02-01T12:39:36.193 回答