Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 基于编程形式的身份验证_Jsf 2_Form Authentication - Fatal编程技术网

Jsf 2 基于编程形式的身份验证

Jsf 2 基于编程形式的身份验证,jsf-2,form-authentication,Jsf 2,Form Authentication,我正在尝试执行基于表单的编程身份验证,看起来 My web.xml: <web-app> <context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Development</param-value>

我正在尝试执行基于表单的编程身份验证,看起来 My web.xml:

          <web-app>

            <context-param>
                <param-name>javax.faces.PROJECT_STAGE</param-name>
                <param-value>Development</param-value>
            </context-param>

            <servlet>
                <servlet-name>Faces Servlet</servlet-name>
                <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
                <load-on-startup>1</load-on-startup>
            </servlet>

            <servlet-mapping>
                <servlet-name>Faces Servlet</servlet-name>
                <url-pattern>*.jsf</url-pattern>
            </servlet-mapping>

            <servlet-mapping>
                <servlet-name>Faces Servlet</servlet-name>
                <url-pattern>*.xhtml</url-pattern>
           </servlet-mapping>

            <welcome-file-list>
                <welcome-file>confirmauthentication.xhtml</welcome-file>
            </welcome-file-list>

            <session-config>
                 <session-timeout>10</session-timeout>
            </session-config>

            <security-constraint>
                <display-name>Authentication Ex Login</display-name>
                <web-resource-collection>
                    <web-resource-name>SecuredArea</web-resource-name>
                    <url-pattern>/*</url-pattern>
                    <http-method>GET</http-method>
                    <http-method>POST</http-method>
                </web-resource-collection>
                <auth-constraint>
                    <description/>
                    <role-name>*</role-name>
                </auth-constraint>  
            </security-constraint>

            <login-config>
                <auth-method>FORM</auth-method>
                <realm-name>mysqldomain</realm-name>
                <form-login-config>
                <form-login-page>/authentication.xhtml</form-login-page>
                <form-error-page>/error.xhtml</form-error-page>
                </form-login-config>
            </login-config>

            <security-role>
                <description/>
                <role-name>*</role-name>
            </security-role>
                </web-app>
我的EJB是:

                @Stateless
                public class UserEJB{


                @PersistenceContext(unitName = "PyPersistenceUnit")
                private EntityManager entityManager;

                 public UserEJB(){}

                @TransactionAttribute(TransactionAttributeType.REQUIRED)
                public User authenticationUser(String userName, String password){


                try{
                 User user = entityManager.createNamedQuery(User.FIND_USER,User.class). setParameter("userName", userName).setParameter("password", password).getSingleResult();
                 return user;
            }
            catch(NonUniqueResultException ex){
                ex.printStackTrace();
                return null;
            }
            catch(NoResultException ex){
                ex.printStackTrace();
                return null;
            }
                }

您的bean不是由JSF管理的,因此JSF无法在任何地方找到bean

将JSFbean管理注释添加到类中

@ManagedBean
@RequestScoped
public class BeanJSF implements Serializable {
    // ...
}

非常感谢。我已成功执行身份验证!你能提供我你的代码请,我想实现,但它越来越多的问题给我请。。
                @Stateless
                public class UserEJB{


                @PersistenceContext(unitName = "PyPersistenceUnit")
                private EntityManager entityManager;

                 public UserEJB(){}

                @TransactionAttribute(TransactionAttributeType.REQUIRED)
                public User authenticationUser(String userName, String password){


                try{
                 User user = entityManager.createNamedQuery(User.FIND_USER,User.class). setParameter("userName", userName).setParameter("password", password).getSingleResult();
                 return user;
            }
            catch(NonUniqueResultException ex){
                ex.printStackTrace();
                return null;
            }
            catch(NoResultException ex){
                ex.printStackTrace();
                return null;
            }
                }
@ManagedBean
@RequestScoped
public class BeanJSF implements Serializable {
    // ...
}