如何使用Primefaces的Spring安全性
我发现了很多例子,但问题是它们都使用如何使用Primefaces的Spring安全性,spring,primefaces,spring-security,Spring,Primefaces,Spring Security,我发现了很多例子,但问题是它们都使用JSP/JSF作为视图。问题是他们总是使用j_username作为用户名输入id,而j_password作为密码id。我发现这些名称都是标准名称。Primefaces不允许我为p:inputtext组件命名。你有什么解决办法吗 以下是一个示例:尝试使用指向登录控制器URL的普通HTML表单,而不是Primefaces标签: <form name='f' action="/j_spring_security_check" method='POST'>
JSP/JSF
作为视图。问题是他们总是使用j_username
作为用户名输入id,而j_password
作为密码id。我发现这些名称都是标准名称。Primefaces不允许我为p:inputtext
组件命名。你有什么解决办法吗
以下是一个示例:尝试使用指向登录控制器URL的普通HTML表单,而不是Primefaces标签:
<form name='f' action="/j_spring_security_check" method='POST'>
<input type='text' name='j_username' value=''>
<input type='password' name='j_password' />
<input name="submit" type="submit" value="submit" />
</form>
j_用户名
和j_密码
是Spring Security中唯一的默认值。您可以按预期自定义这些名称。要执行此操作,请按如下方式设置密码参数
和用户名参数
的值:
<security:form-login login-page="/login.html"
default-target-url="/welcome.html"
always-use-default-target="true"
authentication-failure-url="/login.html?error"
password-parameter="your_value"
username-parameter="your_value"/>
我使用的是SpringSecurity3.1。在另一个版本中,配置可能与上述类似。您可以直接发布到
j\u spring\u security\u check
,但有时可以通过编程将这两个世界结合起来
<p:commandButton value="Login" action="#{loginController.login}" ajax="false">
<h:inputText id="j_username" required="true" />
<h:inputSecret id="j_password" required="true" />
生成表单时,用户名字段和密码字段的名称是什么?您使用的是哪个版本的Spring Security?谢谢小提示:根据您是否使用spring身份验证处理程序,您可能需要添加
FacesContext.getCurrentInstance().responseComplete()代码>
ExternalContext context = FacesContext.getCurrentInstance()
.getExternalContext();
RequestDispatcher dispatcher = ((ServletRequest) context.getRequest()).getRequestDispatcher("/j_spring_security_check");
dispatcher.forward((ServletRequest) context.getRequest(),
(ServletResponse) context.getResponse());