我正在尝试将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
问题:
为什么包含action
的标签指向主页,即使我没有指定它?
我觉得生成的提交按钮不正确。我错过了什么吗?
当我运行Firebug以查看发生了什么时,我发现302 Moved Temporarily
错误。这可能是因为第1点中提到的action
标记问题。
以下是用于参考的弹簧安全配置文件
<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>
注意:
当我允许spring security使用默认表单登录页面时,它可以正常工作