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)