2

<login-config>我相信通过++<security-constraint><security-role>通过使用实现 JSF 应用程序的安全性<filter>是两种不同的方式!?他们是吗?

我尝试通过上面的第一种方法(使用 <login-config>+ <security-constraint>+ <security-role>)实现安全性,但发现我的受保护网页同时使用受保护和不受保护的 HTML 组件,甚至向未经身份验证的用户提供了不受保护的资源。

我需要完全保护 URL,以便受保护的 URL 甚至不会将该网页的任何部分泄露给未经身份验证的用户。我该怎么做?

而且,安全实施是否<filter>web.xml自我管理的方式来处理安全问题?我相信然后您可以在过滤/捕获每个请求时更细粒度地自定义安全性?

4

1 回答 1

7

这确实是两种截然不同的方式。这<security-constraint>是容器管理身份验证 (CMS) 的一部分。这Filter是本土认证的一部分。

要使用 CMS 限制对某些资源的访问,您只需设置其<url-pattern>

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Application</web-resource-name>
        <url-pattern>/app/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>someRoleName</role-name>
    </auth-constraint>
</security-constraint>

上面的示例对所有匹配的 URL 施加了约束,/app/*并且只允许用户访问someRoleName

要使用 a 限制对某些资源的访问Filter,您还必须设置它<url-pattern>

<filter>
    <filter-name>authenticationFilter</filter-name>
    <filter-class>com.example.AuthenticationFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>authenticationFilter</filter-name>
    <url-pattern>/app/*</url-pattern>
</filter-mapping>

您只需要在其他地方定义角色,也许作为<init-param>过滤器的一个。

于 2011-10-24T11:56:51.420 回答