2011-04-01 39 views
7

我有一个托管bean与2属性:userName & password(与其相应的getter和setter方法),以及login()方法访问数据库来验证登录凭据。HTTPS协议和JSF 2,为保护资源和登录

我的问题是,当用户点击“登录”按钮时,动作必须通过https协议。我如何通过JSF 2实现这一目标?另外,如果我想要保护一些Faces(在https协议下),我该如何实现这一目标?有没有一种过滤器可以让我做到这一点?

在此先感谢。

回答

8

您可以在应用程序的web.xml定义一个安全约束:

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>SecureConnection</web-resource-name> 
     <url-pattern>*</url-pattern> 
     <http-method>GET</http-method> 
     <http-method>POST</http-method> 
     </web-resource-collection> 
     <auth-constraint/> 
     <user-data-constraint> 
     <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
     </user-data-constraint> 
</security-constraint> 

适应的url-pattern包含您的登录页和其他所有安全网页。 https的使用由用户数据约束来定义。

Java EE tutorial

如果指定的机密或 INTEGRAL作为安全限制,它 通常意味着使用SSL需要 并适用于匹配URL模式的所有请求 web 资源集合,而不仅仅是登录对话框的 。

如果你写了自己的登录()方法,使用的是GlassFish,你可以看看基于容器的身份验证与JDBCRealm作为替代登录方法。