1.인메모리 사용자 스토어

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
	
	//스프링 시큐리티는 기본적으로 암호와된 비밀번호를 요구하기 때문에 로그인 에러가 발생한다.
	@Override
	protected void configure(AuthenticationManagerBuilder auth) throws Exception {
		auth.inMemoryAuthentication()
		.withUser("alex").password("1234").roles("MEMBER")
		.and()
		.withUser("jade").password("1234").roles("MEMBER", "ADMIN")		
		.and()
		.withUser("admin").password("1234").roles("ADMIN");
	}

2.userDetailService()

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
	
	@Bean
	@Override
	public UserDetailsService userDetailsService() {
		UserBuilder users = User.withDefaultPasswordEncoder();
		
		UserDetails alex = users
		.username("alex")
		.password("1234")
		.roles("MEMBER")
		.build();
		
		UserDetails jade = users
		.username("jade")
		.password("1234")
		.roles("MEMBER", "ADMIN")
		.build();
		
		UserDetails admin = users
		.username("admin")
		.password("1234")
		.roles("ADMIN")
		.build();		
		
		return new InMemoryUserDetailsManager(alex, jade, admin);
	}

3.단일사용자

@Bean
	@Override
	public UserDetailsService userDetailsService() {
		UserDetails user = User.withDefaultPasswordEncoder()
		.username("alex")
		.password("1234")
		.roles("MEMBER")
		.build();
		
		return new InMemoryUserDetailsManager(user);
	}
<html xmlns:th="<http://www.thymeleaf.org>"
	xmlns:sec="<http://www.thymeleaf.org/thymeleaf-extras-springsecurity5>">

<body>
	<div align="center" th:fragment="menu">
		<table>
			<tr>
				<td width="80"><a href="../home.html" th:href="@{/}" th:text="#{header.home}">홈</a></td>
				
				<th:block sec:authorize="!isAuthenticated()">
					<td width="120"><a href="../board/list.html" th:href="@{/board/list}" th:text="#{menu.board.member}">회원게시판</a></td>
					<td width="120"><a href="../notice/list.html" th:href="@{/notice/list}" th:text="#{menu.notice.member}">공지사항</a></td>				
				</th:block>
	
				<th:block sec:authorize="isAuthenticated()">
					<th:block sec:authorize="hasRole('ADMIN')">
						<td width="120"><a href="../codegroup/list.html" th:href="@{/codegroup/list}" th:text="#{menu.codegroup.list}">코드그룹관리</a></td>
						<td width="120"><a href="../codedetail/list.html" th:href="@{/codedetail/list}" th:text="#{menu.codedetail.list}">코드관리</a></td>
						<td width="120"><a href="../board/list.html" th:href="@{/board/list}" th:text="#{menu.board.admin}">회원게시판관리</a></td>
						<td width="120"><a href="../notice/list.html" th:href="@{/notice/list}" th:text="#{menu.notice.admin}">공지사항관리</a></td>
					</th:block>
					<th:block sec:authorize="hasRole('MEMBER')">
						<td width="120"><a href="../board/list.html" th:href="@{/board/list}" th:text="#{menu.board.member}">회원게시판</a></td>
						<td width="120"><a href="../notice/list.html" th:href="@{/notice/list}" th:text="#{menu.notice.member}">공지사항</a></td>					
					</th:block>
				</th:block>
			</tr>
		</table>
	</div>
</body>
</html>

4.비밀번호 암호 무효화(ch0304d)