0

我有一个 Java EE facelets web 应用程序,具有基于表单的身份验证。

我需要在用户成功验证后立即调用过滤器或侦听器。我目前添加了一个过滤器,但它总是被调用(在用户进行身份验证的 http 请求中,以及之后在用户仍然通过身份验证的每个其他 http 请求中)。

如何告诉应用程序服务器仅在用户成功通过身份验证的 http 请求时调用我的过滤器?

  <filter>
    <filter-name>successfullLoginFilter</filter-name>
    <filter-class>com.example.SuccessfullLoginFilter</filter-class>
  </filter>

  <filter-mapping>
    <filter-name>successfullLoginFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <login-config>
    <auth-method>FORM</auth-method>
    <form-login-config>
      <form-login-page>/authentication.jsp</form-login-page>
      <form-error-page>/login.failed</form-error-page>
    </form-login-config>
  </login-config>
4

1 回答 1

0

需要做两件事: 1. 在调用其他过滤器之后编写代码。这样,它会在响应后做出反应。2. 你有一个 /* 的 url-pattern 暗示它会一直被调用。如果您有用于身份验证的 url 模式,那么它只会在与该模式一致的 url 之后被调用。如果您有一个成功登录的新模式,那么它会更容易,因为您可以将其用作 url-pattern 定义。

于 2013-01-27T11:46:40.683 回答