Skip to content

5.2.1 Dịch vụ thông tin người dùng trong bộ nhớ

Một nơi có thể lưu thông tin người dùng là trong bộ nhớ. Giả sử bạn chỉ có một vài người dùng và những người này ít có khả năng thay đổi. Trong trường hợp đó, có thể đơn giản chỉ cần định nghĩa những người dùng đó như một phần của cấu hình bảo mật.

Phương thức bean sau đây cho thấy cách tạo một InMemoryUserDetailsManager với hai người dùng, “buzz” và “woody,” cho mục đích đó.

Liệt kê 5.2 Khai báo người dùng trong một bean dịch vụ thông tin người dùng trong bộ nhớ

java
@Bean
public UserDetailsService userDetailsService(PasswordEncoder encoder) {
  List<UserDetails> usersList = new ArrayList<>();
  usersList.add(new User(
    "buzz", encoder.encode("password"),
      Arrays.asList(new SimpleGrantedAuthority("ROLE_USER"))));
  usersList.add(new User(
    "woody", encoder.encode("password"),
      Arrays.asList(new SimpleGrantedAuthority("ROLE_USER"))));
  return new InMemoryUserDetailsManager(usersList);
}

Tại đây, một danh sách các đối tượng User của Spring Security được tạo ra, mỗi đối tượng có tên người dùng, mật khẩu, và một danh sách một hoặc nhiều quyền. Sau đó, một InMemoryUserDetailsManager được tạo bằng danh sách đó.

Nếu bạn chạy thử ứng dụng bây giờ, bạn sẽ có thể đăng nhập bằng “woody” hoặc “buzz,” với mật khẩu là password.

Dịch vụ thông tin người dùng trong bộ nhớ rất tiện lợi cho mục đích thử nghiệm hoặc các ứng dụng rất đơn giản, nhưng nó không hỗ trợ việc chỉnh sửa người dùng một cách dễ dàng. Nếu bạn cần thêm, xóa hoặc thay đổi một người dùng, bạn sẽ phải thực hiện các thay đổi cần thiết và sau đó xây dựng lại và triển khai lại ứng dụng.

Đối với ứng dụng Taco Cloud, bạn muốn khách hàng có thể đăng ký với ứng dụng và quản lý tài khoản người dùng của chính họ. Điều đó không phù hợp với những giới hạn của dịch vụ thông tin người dùng trong bộ nhớ. Vì vậy, hãy cùng xem cách tạo một triển khai tùy chỉnh của UserDetailsService cho phép sử dụng cơ sở dữ liệu lưu trữ người dùng.

Released under the MIT License.