[Spring boot + Spring Security] Authentication with Custom UserDetailsService

1. Prepare Tools

  • IDE: Netbean 8.2
  • JDK: 1.8
  • Maven: 3.5.0 ## 2. Target Build project thỏa mãn các yêu cầu sau:
  • Sử dụng spring boot + spring security
  • Build một user service cung cấp user xác thực cho project
  • Sử dụng annotation configuration thay cho xml configuration.
    

    3. Maven dependency

        <!-- Core starter, including auto-configuration support, logging and YAML -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!-- Starter for using Spring Security -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <!-- Starter for building web, including RESTful, applications using Spring MVC. Uses Tomcat as the default embedded container -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
    

    4. Project setup and description

  • Sử dụng basic project mình đã tạo ở bài trước
    https://viblo.asia/p/spring-boot-spring-security-basic-project-1VgZvEmpKAw

  • UserDetailsService
    UserDetailSerivce là một core-interface của spring có chức năng tổng hợp thông tin và đóng gói lại thành một object userDetail. Nó có một method loadUserByUsername(String userName) dùng để tìm kiếm thông tin user dựa trên username. Các bạn có thể override lại hàm này để viết lại tìm kiếm user riêng của hệ thống mình.
    Trên thực tế, userdetailService chịu trách nhiệm load ra các thông tin cần thiết của user sau khi đã qua bước xác thực, spring hỗ trợ việc cài đặt xác thưc (authentication) thông qua authentication provider, trong phạm vi bài này mình gộp luôn chức năng xác thực vào trong userDetailService.

   @Override
    public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException {
        if ("soithattha".equals(userName)) {
            return User.withUsername("soithattha").password("123456").roles("USER").build();
        } else {
            throw new UsernameNotFoundException(userName);
        }

    }
  1. Security config Khai báo thêm userDetailService trong phần cấu hình ban đầu của hệ thống
    @Autowired    
    private UserService userDetailsService;

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(customAuthenticationProvider);
        auth.userDetailsService(userDetailsService);
    }

5. Demo


5. Full Source

spring-security-user-service
http://bit.ly/2DfkP42

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

xoandaica

14 bài viết.
6 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
3 0
Bài viết này sẽ hướng dẫn các bạn từng bước xây dựng một ứng dụng java sử dụng spring boot kết hợp với spring data jdbc để lưu trữ và nhận dữ liệu ...
xoandaica viết 6 tháng trước
3 0
White
2 0
1. Single Thread 1. Làm một việc tại một thời điểm Không giống như đa số các ngôn ngữ lập trình khác, javascript đơn giản là đơn luồng. Điều này ...
xoandaica viết 7 tháng trước
2 0
White
2 0
1. Prepare Tools IDE: Netbean 8.2 JDK: 1.8 Maven: 3.5.0 2. Target Build project thỏa mãn các yêu cầu sau: Sử dụng spring boot + spring ...
xoandaica viết 7 tháng trước
2 0
Bài viết liên quan
White
0 0
Giới thiệu Trong bài hôm nay chúng ta sẽ tìm hiểu cách handle request POST của Spring Boot. Trước đó, bạn nên biết 1. 「Spring Boot 8」Tạo Web He...
https://loda.me viết 3 tháng trước
0 0
White
0 0
Trong bài viết này, một số hình ảnh hoặc nọi dung có thể bị thiếu do quá trình chế bản. Vui lòng xem nội dung ở blog gốc sau: (Link) (Link), chúng...
programmerit viết gần 4 năm trước
0 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
14 bài viết.
6 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!