私はこのようなログインフォームを持つサイトを持っています。Safariのオートパニューが空白文字列
<h:panelGrid columns="3">
<p:outputLabel value="Username:" for="username"/>
<p:inputText id="username" autocomplete="off" />
<p:message for="username"/>
<p:outputLabel value="Password:" for="password"/>
<p:password id="password" />
<p:message for="password"/>
</h:panelGrid>
我々はパスワードを検証するために春のセキュリティを使用している、と私は春のUsernamePasswordAuthenticationFilterにブレークポイントを投げるときSafariの自動入力パスワード機能を使用する場合、パスワードは常に空白です。これにより、ログインが失敗します。参考のため
は、ここに私のブレークポイントは、私はこれを解決するためにチェックすることができるものに総損失によ
public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException {
if (postOnly && !request.getMethod().equals("POST")) {
throw new AuthenticationServiceException("Authentication method not supported: " + request.getMethod());
}
String username = obtainUsername(request);
String password = obtainPassword(request);
if (username == null) {
username = "";
}
//My breakpoint is here, but password = "" even though we have a user name
if (password == null) {
password = "";
}
username = username.trim();
UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken(username, password);
// Allow subclasses to set the "details" property
setDetails(request, authRequest);
return this.getAuthenticationManager().authenticate(authRequest);
}
に位置しているSpringのコードの一部です。このパスワードの問題はSafariにのみ影響します。 IE、Chrome、FFなどの他のブラウザはうまく動作します。
フォームをどのように提出していますか?あなたの 'p:password'を処理していますか? –