我想将 Spring Security 与 JSF2 和 Richfaces 一起使用。
如果我使用 spring 生成的登录页面,它工作正常。
<security:http auto-config="true" use-expressions="true">
<security:intercept-url pattern="/Admin*" access="isAuthenticated()" />
<security:form-login login-page="/spring_security_login" login-processing-url="/j_spring_security_check" authentication-failure-url="/spring_security_login?login_error" />
<security:logout logout-url="/j_spring_security_logout" logout-success-url="/" delete-cookies="JSESSIONID" invalidate-session="true"/>
</security:http>
现在我想介绍我的自定义登录。
<security:form-login login-page="/login.xhtml" ....>
登录.xhtml:
<h:form id ="select_form" prependId="false">
<h:panelGrid columns="2" style="">
<h:outputText value ="Identifiant :"> </h:outputText>
<h:inputText name="j_username" >
<rich:placeholder value="Entrez un identifiant..." />
</h:inputText>
<h:outputText value ="Mot de passe :"> </h:outputText>
<h:inputText name="j_password" >
<rich:placeholder value="Entrez un mot de passe..." />
</h:inputText>
<h:outputText value =""> </h:outputText>
<h:commandButton id="btnLoginId" action="j_spring_security_check" value="Login" type="submit" style="float:right;" />
</h:panelGrid>
</h:form>
问题是我想按照 security-conf.xml 中的描述使用 j_spring_security_check。
但是 JSF 想要重定向到一个不存在的 url。事实上,如果我尝试将 faces-configs.xml 中的导航案例配置为 j_spring_security_check ,它无论如何都不会工作,因为 j_spring_security_check 没有提供呈现的页面,它更像是一种身份验证控制器,为我们完成这项工作。
所以我的问题是如何在 JSF2 中配置操作登录,而不使用支持 bean,只调用 security-conf 的强度来完成所有工作,而不需要编写更多的行。或者在使用 j_spring_security_check 时如何配置 faces-config 导航?可能吗 ?
非常感谢你的帮助。
更新:它可以在不使用 JSF 的情况下使用硬编码的 html 正常工作。
<form name='f' action='/Lyric/j_spring_security_check' method='post'>
<table>
<tr><td>User:</td><td><input type='text' name='j_username' value=""/></td></tr>
<tr><td>Password:</td><td><input type='password' name='j_password'/></td></tr>
<tr><td colspan='2'><input name="submit" type="submit" value="Login"/></td></tr>
</table>
</form>