Final Reseult

This commit is contained in:
2026-10-27 15:32:31 +09:00
parent a9c5fb2283
commit 13241369ae
3 changed files with 50 additions and 31 deletions

View File

@@ -14,46 +14,59 @@ import com.example.demo.service.LoginAttemptService;
// ログイン失敗時の処理
@Component
public class CustomAuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler {
public class CustomAuthenticationFailureHandler
extends SimpleUrlAuthenticationFailureHandler {
private LoginAttemptService loginAttemptService;
private final LoginAttemptService loginAttemptService;
public CustomAuthenticationFailureHandler(LoginAttemptService loginAttemptService) {
public CustomAuthenticationFailureHandler(
LoginAttemptService loginAttemptService) {
this.loginAttemptService = loginAttemptService;
}
@Override
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response,
AuthenticationException exception) throws IOException, ServletException {
public void onAuthenticationFailure(
HttpServletRequest request,
HttpServletResponse response,
AuthenticationException exception)
throws IOException, ServletException {
// 画面から入力されたメールアドレスを取得
String mailAddress = request.getParameter("mailAddress");
if (mailAddress != null && !mailAddress.isBlank()) {
// メールアドレスが空欄の場合
if (mailAddress == null || mailAddress.isBlank()) {
getRedirectStrategy().sendRedirect(
request, response, "/login?error=empty");
return;
}
String mail = mailAddress.trim();
// すでにロックされている場合
if (loginAttemptService.isBlocked(mail)) {
getRedirectStrategy().sendRedirect(
request, response, "/login?error=locked");
return;
}
// 失敗回数を1増やす
// ログイン失敗回数を増やす
loginAttemptService.loginFailed(mail);
// すでにロック中なら失敗回数を増やさない
// 失敗回数の上限に達した場合
if (loginAttemptService.isBlocked(mail)) {
getRedirectStrategy().sendRedirect(
request, response, "/login?error=locked");
return;
}
// あと何回失敗されるとロックされるか取得
int remaining = loginAttemptService.getRemainingAttempts(mail);
// 残りのログイン試行回数を取得
int remaining =
loginAttemptService.getRemainingAttempts(mail);
getRedirectStrategy().sendRedirect(
request, response, "/login?error=failed&remaining=" + remaining);
}
request, response,
"/login?error=failed&remaining=" + remaining);
}
}

View File

@@ -127,3 +127,8 @@ th { background: #eaf4f6; }
.page-number:hover {
background: #d5edf1;
}
.page-number.active {
background: #176a78;
color: #fff;
border-color: #176a78;
}

View File

@@ -65,6 +65,7 @@
th:href="@{/books(page=${bookPage.number-1}, nmBook=${nmBook}, publisher=${publisher}, note=${note})}">前へ</a>
<span th:each="pageNum : ${pageNumbers}">
<a class="page-number"
th:classappend="${pageNum == bookPage.number} ? ' active' : ''"
th:href="@{/books(page=${pageNum}, nmBook=${nmBook}, publisher=${publisher}, note=${note})}"
th:text="${pageNum + 1}"></a>
</span>