我有一个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>
答案 0 :(得分:0)
需要两件事: 1.在调用其他过滤器后编写代码。这样它会在响应后作出反应。 你有一个/ *的url模式暗示它将永远被调用。如果您有用于身份验证的url-pattern,那么它只会在与该模式一致的url之后调用。 如果你有一个成功登录的新模式,那么它就更容易了,因为你可以使用它作为url-pattern定义。