使用spring security form登录时,我需要帮助解决问题。表单登录发送带有转义特殊字符的用户名到服务器,但是春天没有unescape这个参数,而且没有在数据库中找到用户。
我使用自定义UserDetailsService,但带有username的参数包含scape特殊字符。这可能是特殊角色吗?
我正在尝试使用特殊字符,但在更改时失败。
数据: - 春季3.1.1.RELEASE - Spring Security 3.1.1.RELEASE - Tomcat 7.X
修改
我认为通过在web.xml文件中添加enconding过滤器可以解决问题。
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
答案 0 :(得分:0)
你不应该做任何复杂的事情,只需使用标准弹簧设置
<form name="f" id="f" action="<c:url value='/j_spring_security_check'/>" method="POST">
<label for="j_username">E-mail : </label><input type='text' id='j_username' name='j_username'/><br/>
<label for="j_password">Password : </label><input type='password' id='j_password' name='j_password'><br>