1

tomcat 7.0.6でservlet3.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")

仕様の興味深い「機能」は、制約が AND ではなく OR であることです。したがって/index、GET として要求している場合、セキュリティ制約はパスし、rolesAllowed 制約は無視されます。

SecurityFilter [ http://securityfilter.sourceforge.net/ ]のようなサードパーティのライブラリは、サーブレット仕様によって提供されるものと比較して、制約の処理においておそらくより良い仕事をするでしょう。

于 2011-02-01T12:39:36.193 に答える