2012-11-29 7 views
4

구현 방법 012_security_check프라임형? 일반적으로 JSP에 당신은 JAAS 로그인에 대한, 로그인 폼은 일반적으로 사용하려는 경우 :j_security_check을 기본으로 사용

<form action="j_security_check" method="POST"> 
    Username:<input type="text" name="j_username"><br> 
    Password:<input type="password" name="j_password"> 
    <input type="submit" value="Login"> 
</form> 

그러나 우리는 어떻게 JSF 또는 Primefaces에 구현합니까!

  • 작업
  • 우리는 또한 p:commandButton는 기본적으로 Primefaces에 ajaxified되어 formId:componentId
  • 같은 ID 또는 이름을 제거하려면 어떻게해야
  • , 그래서 비 아약스의 양식을 제출 않는 방법을 될 것입니다 무엇 방법

나는 Primefaces 내가 졸을 공유하고 함께 JAAS 폼 인증을 구현하는 요구 사항을했다 ution 여기; 누군가에게 도움이 될지도 모릅니다.

+1

관련/속는 : http://stackoverflow.com/question/2206911/best-way-for-user-authentication-on-javaee-6-using-jsf-2-0/2207147 # 2207147 – BalusC

답변

18

이 솔루션은 매우 간단합니다.

  • 당신은 formId:componentId 컴퍼넌트의 ID 또는 이름을 생성하지 않도록, prependId="false"으로 h:form을 정의해야합니다.
  • 당신이 필요로 정의 된 형태가 아약스 방법으로 제출되지 않도록, falsep:commandButtonajax 속성을 설정 h:formonsubmit="document.getElementById('login').action='j_security_check';"
  • action="j_security_check".

그게 전부입니다. 다음은 위의 양식으로 대체 할 수있는 로그인 양식의 전체 코드입니다.

<h:form id="login" onsubmit="document.getElementById('login').action='j_security_check';" prependId="false"> 
    <h:panelGrid columns="2"> 
     <p:outputLabel for="j_username" value="Username" /> 
     <p:inputText id="j_username" name="j_username" />    
     <p:outputLabel for="j_password" value="Password" /> 
     <p:password id="j_password" name="j_password"/> 
     <p:commandButton id="submit" value="Login" ajax="false"/> 
    </h:panelGrid> 
</h:form> 

감사합니다.

+6

그냥 대신에 '

'을 사용할 수 있습니다. 불쾌한 JS 코드는 필요 없다. ('document.getElementById ('login'). '부분을 제거하면 더 간단해질 수있다.) – BalusC

+0

@BalusC 늦은 코멘트에 대해 유감이지만 올바른 해결책이 아닌 것으로 보입니다. 나는 자바 스크립트가 못생긴다는 ​​것에 동의하지만 -''만 사용한다면'p : commandButton'에서'id = "submit"을 사용할 수 없으므로 로그인이 작동하지 않습니다. 더 깨끗한 솔루션이 있습니까? –

+1

@ OschtärEi : PF 스타일 클래스가있는''을 사용하십시오. – BalusC

2

코드 (5 Primefaces과)가 작동하고 (: InputText]를 및 P : 제거 이름 페이지에서 속성 암호 BalusC 부분에 의해 제안 제거) :

<h:form id="login" onsubmit="action='j_security_check';" prependId="false"> 
    <h:panelGrid columns="2"> 
     <p:outputLabel for="j_username" value="Username" /> 
     <p:inputText id="j_username" />    
     <p:outputLabel for="j_password" value="Password" /> 
     <p:password id="j_password" /> 
     <p:commandButton id="submit" value="Login" ajax="false"/> 
    </h:panelGrid> 
</h:form> 
관련 문제