[Spring Security] 로그인시 발생되는 오류 문구를 내가 설정해보자

 

 

글 순서

1. properties 생성

2. bean으로 등록

3. jsp에 몇 줄 추가

 

 

properties 생성해 줍니다.

 

properties 만드는 걸 까먹은 분들은 messages 폴더 위에 커서

General - Untitled Text File 선택 후

이걸 선택하면 Untitled 1 이런 식으로 창이 하나 뜨실 텐데 내용을 적은 후

Save As - 파일 경로 선택 및 File Name(security_message.properties) 적으면 파일 생성 완료

 

 

security_message.properties

AbstractLdapAuthenticationProvider.emptyPassword = 비밀번호가 맞지 않습니다.
AbstractSecurityInterceptor.authenticationNotFound = SecurityContext에서 Authentication 객체를 찾을 수 없습니다.
AbstractUserDetailsAuthenticationProvider.badCredentials=아이디나 비밀번호가 맞지 않습니다. 다시 확인해주세요.
AbstractUserDetailsAuthenticationProvider.credentialsExpired=비밀번호 유효기간이 만료 되었습니다. 관리자에게 문의하세요.
AbstractUserDetailsAuthenticationProvider.disabled=계정이 비활성화되었습니다. 관리자에게 문의하세요.
AbstractUserDetailsAuthenticationProvider.expired=계정이 만료되었습니다. 관리자에게 문의하세요.
AbstractUserDetailsAuthenticationProvider.locked=계정이 잠겨있습니다. 관리자에게 문의하세요.
AbstractUserDetailsAuthenticationProvider.onlySupports = UsernamePasswordAuthenticationToken만 지원합니다.
AccountStatusUserDetailsChecker.credentialsExpired = 자격 증명 유효 기간이 만료되었습니다.
AccountStatusUserDetailsChecker.disabled = 유효하지 않은 사용자입니다.
AccountStatusUserDetailsChecker.expired = 사용자 계정의 유효 기간이 만료 되었습니다.
AccountStatusUserDetailsChecker.locked = 사용자 계정이 잠겨 있습니다.
AclEntryAfterInvocationProvider.noPermission = domain object {1}에 대한 권한이 Authentication {0}에 없습니다.
AnonymousAuthenticationProvider.incorrectKey = 제공된 AnonymousAuthenticationToken에는 필요로하는 key가 없습니다.
BindAuthenticator.badCredentials = 자격 증명에 실패하였습니다.
BindAuthenticator.emptyPassword = 비밀번호 항목이 비어 있습니다.
CasAuthenticationProvider.incorrectKey = 제공된 CasAuthenticationToken에는 필요로 하는 key가 없습니다.
CasAuthenticationProvider.noServiceTicket = 검증을 위한 CAS 서비스 티켓을 제공할 수 없습니다.
ConcurrentSessionControlAuthenticationStrategy.exceededAllowed = 최대 세션 허용 수 {0}개를 초과하였습니다.
DigestAuthenticationFilter.incorrectRealm = 응답 realm 이름 {0}과 시스템 realm 이름 {1}이 일치하지 않습니다.
DigestAuthenticationFilter.incorrectResponse = 응답이 정확하지 않습니다.
DigestAuthenticationFilter.missingAuth = 'auth' QOP(quality of protection)를 위한 digest 값은 필수 항목입니다. 현재 header 값은 {0}입니다.
DigestAuthenticationFilter.missingMandatory = digest 값은 필수 항목입니다. 현재 header 값은 {0}입니다.
DigestAuthenticationFilter.nonceCompromised = Nonce 토큰이 손상되었습니다. 현재 nonce 값은 {0}입니다.
DigestAuthenticationFilter.nonceEncoding = Nonce 값이 Base64로 인코딩 되어있지 않습니다. 현재 nonce 값은 {0}입니다.
DigestAuthenticationFilter.nonceExpired = Nonce의 유효 기간이 만료되었거나 시간이 초과되었습니다.
DigestAuthenticationFilter.nonceNotNumeric = Nonce 토큰의 첫 글자는 숫자로 시작해야 합니다. 현재 nonce 값은 {0}입니다.
DigestAuthenticationFilter.nonceNotTwoTokens = Nonce는 두 개의 토큰을 만들어야 합니다. 현재 nonce 값은 {0}입니다.
DigestAuthenticationFilter.usernameNotFound = {0} ID를 찾을 수 없습니다.
JdbcDaoImpl.noAuthority = {0} 사용자는 권한이 없습니다.
JdbcDaoImpl.notFound = {0} 사용자를 찾을 수 없습니다.
LdapAuthenticationProvider.badCredentials = 자격 증명에 실패하였습니다.
LdapAuthenticationProvider.credentialsExpired = 자격 증명 유효 기간이 만료되었습니다.
LdapAuthenticationProvider.disabled = 유효하지 않은 사용자입니다.
LdapAuthenticationProvider.expired = 사용자 계정의 유효 기간이 만료 되었습니다.
LdapAuthenticationProvider.locked = 사용자 계정이 잠겨 있습니다.
LdapAuthenticationProvider.emptyUsername = ID에 공백은 허용되지 않습니다.
LdapAuthenticationProvider.onlySupports = UsernamePasswordAuthenticationToken만 지원합니다.
PasswordComparisonAuthenticator.badCredentials = 자격 증명에 실패하였습니다.
PersistentTokenBasedRememberMeServices.cookieStolen = 로그인 상태 유지를 위한 토큰이 일치하지 않습니다. 이전에 사용한 토큰이 타인으로부터 탈취 당했을 수 있습니다.
ProviderManager.providerNotFound = {0}을 위한 AuthenticationProvider를 찾을 수 없습니다.
RememberMeAuthenticationProvider.incorrectKey = 제공된 RememberMeAuthenticationToken에는 필요로 하는 key가 없습니다.
RunAsImplAuthenticationProvider.incorrectKey = 제공된 RunAsUserToken에는 필요로 하는 key가 없습니다.
SubjectDnX509PrincipalExtractor.noMatching = subjectDN\: {0} 내에 매칭되는 패턴이 없습니다.
SwitchUserFilter.noCurrentUser = 요청한 사용자를 찾을 수 없습니다.
SwitchUserFilter.noOriginalAuthentication = Authentication 객체의 원본을 찾을 수 없습니다.

 

 

내용을 만들었으니 설정을 해줘야겠죠?

설정 파일도 만들어 줍시다

 

 

 

MessageConfig.java

package com.blackzapato.demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ResourceBundleMessageSource;

@Configuration
public class MessageConfig {
	@Bean 
	public ResourceBundleMessageSource messageSource() { 
		ResourceBundleMessageSource source = new ResourceBundleMessageSource(); 
		/* message properties 위치 설정 */ 
		source.setBasenames("messages/security_message"); 
		/* encoding 룰 설정 */ 
		source.setDefaultEncoding("UTF-8"); 
		/* 5초간 케싱*/ 
		source.setCacheSeconds(5); 
		return source; 
		} 
}

 

c태그 사용을 위해 

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

 

signin.jsp

<form action="/member/signin" method="post">
					<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
						<div class="input_area">
							<label for="userId">아이디</label> <input type="email" id="username"
								name="username" required="required" />
						</div>

						<div class="input_area">
							<label for="userPass">패스워드</label> <input type="password"
								id="password" name="password" required="required" />
						</div>

						<button type="submit" id="signin_btn" name="signin_btn">로그인</button>
                        <!-- //문구가 들어 갈 곳에 넣어줍시다. -->
						<c:if test="${not empty SPRING_SECURITY_LAST_EXCEPTION}">
							<font color="red">
								<p>${sessionScope["SPRING_SECURITY_LAST_EXCEPTION"].message}</p>
								<c:remove var="SPRING_SECURITY_LAST_EXCEPTION" scope="session" />
							</font>
						</c:if>
						 <!--/// -->
					</form>

 

 

 

 

도움이 된 블로그

https://aljjabaegi.tistory.com/510

 

spring boot security login error message 한글 설정

spring boot security login error message 한글 설정 spring boot 프로젝트에 spring security 적용방법은 아래의 link를 참고하세요. link : https://aljjabaegi.tistory.com/507 springboot 2.x + spring secur..

aljjabaegi.tistory.com