我在jsf应用程序(j_security)中使用基于容器的安全性,使用glassfish对受保护页面的用户进行身份验证。但是,在应用程序中,我有更多受限制的页面,即使在用户登录时也需要重新输入密码。创建多个约束没有帮助,因为会话已经是活动的。
如何做到这一点?
你可以使用servlet过滤器说"SecondAuth",你可以检查用户是否已经通过引用会话标志进行了第二次认证;如果没有,您可以重定向到第二个身份验证页面。记住将请求的URL存储在会话变量中。一旦用户再次成功验证,您就可以重定向到所请求的页面。
您可以使用web.xml配置保护多个页面,如下所示:
web . xml
<filter>
<filter-name>secondauth</filter-name>
<filter-class>com.auth.SecondAuth</filter-class>
</filter>
<filter-mapping>
<filter-name>secondauth</filter-name>
<url-pattern>/app/secure1.jsp</url-pattern>
<url-pattern>/app/secure2.jsp</url-pattern>
</filter-mapping>
关于如何使用servlet过滤器,您可以参考如何使用servlet过滤器在Java中更改传入servlet请求url?