我在Tomcat 上本地运行的JSF应用程序存在登录问题
我有一个j_security登录表单,看起来大致像
<form id="loginForm" method="post" action="j_security_check" >
<h:panelGrid columns="2" cellpadding="5">
<h:inputText id="j_username" required="true" label="username" />
<h:inputSecret id="j_password" required="true" label="password" />
<input type="submit" name="login" value="Login"/>
</h:panelGrid>
</form>
我的web.xml
中有这个
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.xhtml</form-login-page>
<form-error-page>/login.xhtml?error=1</form-error-page>
</form-login-config>
</login-config>
我使用tomcat-users.xml
中定义的用户登录,但它不适用于特殊字符
我在web.xml
中添加了一个过滤器
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
我确保我的连接器在server.xml
中具有URIEncoding
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
相关问题:
- 带有特殊字符的java ldap密码不起作用
- 如何调试j-security-check问题
我的问题有两个
- 它不适用于特殊字符(例如:pàssword(
- 我不知道如何检查发送的密码,有没有办法记录或用调试器拦截它
感谢的任何帮助
这是旧的,但我希望它能帮助一些人(我今天也遇到了同样的问题(
为了支持特殊字符,您需要将编码更改为UTF-8(默认为latin1(
我已经通过在context.xml文件中将编码characterEncoding="UTF-8"
更改为UTF-8来修复它。
<Valve className="org.apache.catalina.authenticator.FormAuthenticator" charset="UTF-8"/>