当我没有指定动作时,为什么动作会出现在JSF Form标签中

时间:2013-07-08 05:53:38

标签: java jsf authentication redirect spring-security

我正在尝试将JSF与Spring安全性集成。

以下是我编写的代码。

    <h:form id="loginForm" prependId="false" class="navbar-form pull-right">
          <h:outputLabel for="#{userManagedBean.username}" value="UserName"/>
          <h:inputText id="j_username" required="true" 
           value="#{userLoginBean.username}" label="UserName"></h:inputText>
          <h:outputLabel for="#{userManagedBean.password}" value="Password"/>
          <h:inputSecret id="j_password" 
          required="true" value="#{userLoginBean.password}"></h:inputSecret>

        <h:commandButton type="submit" value="Login" 
          action="#{userLoginBean.login}" ajax="false" ></h:commandButton>  </h:form> 

但生成的HTML看起来像这样。

  <form id="loginForm" name="loginForm" method="post"
   action="/myappname/" class="navbar-form pull-right" 
   enctype="application/x-www-form-urlencoded">
   <input type="hidden" name="loginForm" value="loginForm" />
   <label for="loginForm:">

   UserName</label><input id="j_username" type="text" 
   name="j_username" /><label for="loginForm:">

   Password</label><input id="j_password"
   type="password" name="j_password" value="" />

   <input type="submit" name="j_idt12" value="Login" />

    </form>

假设有一个名为UserManagedBean的托管Bean

问题:

  1. 为什么包含action的标签指向主页,即使我没有指定它?

  2. 我觉得生成的提交按钮不正确。我错过了什么吗?

  3. 当我运行Firebug以查看发生了什么时,我发现302 Moved Temporarily错误。这可能是因为第1点中提到的action标记问题。

  4. 以下是用于参考的弹簧安全配置文件

        <security:http auto-config="true"  
         access-denied-  page="/security/accessdenied.xhtml" >
         <security:intercept-url pattern="/*" access="ROLE_ADMIN" />
         <security:form-login login-page="/faces/index.xhtml" 
          authentication-failure-url="/error.xhtml"/>
         </security:http>
    
  5. 注意:

    当我允许spring security使用默认表单登录页面时,它可以正常工作

0 个答案:

没有答案