1

タスクを処理する多くのサーブレットにユーザーを転送するゲートウェイ サーブレットがあります。

各ユーザーは最初にゲートウェイ サーブレットを通過し、次に適切なサーブレットに転送する必要があります。RequestDispatcher を作成し、その転送機能を適切なサーブレットに対して実行します。

問題は、すべてのサーブレットが公開されているため、ユーザーが実際に必要なサーブレットを実行できることです。

ゲートウェイ サーブレットへのアクセスのみを許可し、その他すべてのアクセスを制限したいと考えています。もちろん、ゲートウェイがサーブレットに転送できるようにするためです。

どのようにそれを行うことができますか?

ありがとう!

Apache Tomcat 7 の使用

4

1 に答える 1

4

フィルターを使用して現在のユーザーがログインしていることを確認するには、セッション属性を確認して、メソッド userIsLoggedIn() を自分で記述する必要があります。

public class LoginFilter implements Filter {

  public void doFilter(ServletRequest req, ServletResponse res,
        FilterChain chain) throws IOException, ServletException {

      if (userIsLoggedIn()) {

        //process request normally, pass up the filter chain to the servlet:
        chain.doFilter(req, res);  

      } else {

        //go to login screen instead
        RequestDispatcher dispatcher = getRequestDispatcher("login");
        dispatcher.forward( request, response );
      }
  }
}

web.xml で、フィルターを宣言する必要があります。

<filter>
  <filter-name>loginFilter</filter-name>
  <filter-class>
     com.foo.LoginFilter
  </filter-class>
</filter>
<filter-mapping>
  <filter-name>loginFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
于 2013-03-27T16:56:08.973 に答える