2011-01-25 54 views
1

我正在使用Tomcat 7.0.6中的Servlet 3.0规范的ServletSecurity注释,但似乎tomcat服务器并未扫描ServletSecurity注释。代码如下,tomcat 7.0.6是否已经在servlet 3.0规范中支持SevletSercurity注解?

@WebServlet(name="IndexServlet",urlPatterns={"/index"}) 
@DeclareRoles("ROLE_ADMIN") 
@ServletSecurity([email protected](rolesAllowed="ROLE_ADMIN"),[email protected]("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注释呢?

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

回答

1

您需要在规范中删除[email protected]("GET")

一个有趣的“功能”是约束上都OR - 不和。因此,如果您请求/index作为GET - 则安全性约束将被传递,并且rolesAllowed约束将被忽略。

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

+0

我删除了`httpMethodConstraints = @ HttpMethodConstraint(“GET”)`,但问题仍然存在。所以我猜tomcat 7完全不支持`@ ServletSecurity`注释。 – 2011-02-10 12:23:44