Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Primefaces的Spring安全性_Spring_Primefaces_Spring Security - Fatal编程技术网

如何使用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());