Quay lại

Hướng Dẫn Cấu Hình AWS Cognito Để Sử Dụng Email Làm Định Danh Và Hỗ Trợ Cập Nhật Email Chuyên mục Devops    2025-04-03    3 Lượt xem    3 Lượt thích    comment-3 Created with Sketch Beta. 0 Bình luận

Trong bài viết này, chúng ta sẽ tìm hiểu cách thiết lập AWS Cognito để người dùng đăng nhập bằng email, không cần username, và có thể cập nhật email bất cứ lúc nào. Đây là một mô hình phổ biến trong các hệ thống yêu cầu tính linh hoạt khi người dùng đổi email nhưng vẫn muốn giữ tài khoản của mình.

1. Cấu Hình User Pool

Trước tiên, chúng ta cần tạo một User Pool mới trong AWS Cognito với các cài đặt như sau:

  • Email là định danh duy nhất (không có username).

  • Có thể thay đổi email bất cứ lúc nào.

  • Tự động xác minh email.

Tạo User Pool bằng AWS CLI

Chạy lệnh sau để tạo User Pool mới:

aws cognito-idp create-user-pool \
    --pool-name "NewUserPoolWithEmail" \
    --username-attributes "email" \
    --auto-verified-attributes "email" \
    --schema '[{"Name":"email","AttributeDataType":"String","Mutable":true,"Required":true}]'

Giải thích các tham số:

  • --username-attributes "email": Chỉ định rằng email sẽ được sử dụng làm username.

  • --auto-verified-attributes "email": Bật tính năng xác minh email tự động.

  • --schema:

    • email: Trường bắt buộc (Required: true).

    • Mutable: true: Cho phép cập nhật email sau khi tạo user.

Sau khi chạy lệnh này, Cognito sẽ tạo một User Pool mới, và bạn sẽ nhận được User Pool ID (ví dụ: ap-northeast-1_ldmpVOq8J).


2. Tạo Người Dùng Trong User Pool

Sau khi tạo User Pool, chúng ta có thể tạo user bằng lệnh sau:

aws cognito-idp admin-create-user \
    --user-pool-id "your_pool_id" \
    --username "test@gmail.com" \
    --user-attributes Name=email,Value="test@gmail.com" \
    --message-action SUPPRESS

Giải thích các tham số:

  • --user-pool-id "your_pool_id": ID của User Pool.

  • --username "test@gmail.com": Trong hệ thống này, username chính là email.

  • --user-attributes Name=email,Value="test@gmail.com": Gán email cho user.

  • --message-action SUPPRESS: Ngăn Cognito gửi email xác minh mặc định.

📌 Lưu ý: Vì chúng ta không đặt mật khẩu ban đầu, user cần được thiết lập mật khẩu trước khi đăng nhập. Bạn có thể sử dụng admin-set-user-password để đặt mật khẩu thủ công nếu cần.


3. Cập Nhật Email Của User

Nếu người dùng muốn thay đổi email, chúng ta có thể sử dụng lệnh sau để cập nhật:

aws cognito-idp admin-update-user-attributes \
    --user-pool-id "ap-northeast-1_ldmpVOq8J" \
    --username "test@gmail.com" \
    --user-attributes Name=email,Value="new-email@gmail.com"

Giải thích:

  • --username "test@gmail.com": Đây là email cũ (vì nó là định danh chính của user).

  • --user-attributes Name=email,Value="new-email@gmail.com": Cập nhật email mới.

Sau khi chạy lệnh này, người dùng sẽ phải đăng nhập bằng email mới (new-email@gmail.com).

📌 Quan trọng: Vì chúng ta đã chọn email làm username (username-attributes "email"), khi đổi email, người dùng sẽ phải sử dụng email mới để đăng nhập.


4. Kiểm Tra Thông Tin User

Sau khi cập nhật email, bạn có thể kiểm tra lại thông tin user bằng lệnh sau:

aws cognito-idp admin-get-user \
    --user-pool-id "ap-northeast-1_ldmpVOq8J" \
    --username "new-email@gmail.com"

Nếu thông tin user hiển thị đúng với email mới, nghĩa là cập nhật đã thành công.


5. Kết Luận

Bằng cách thiết lập AWS Cognito với email làm định danh duy nhất, chúng ta đã đạt được: ✅ Người dùng chỉ đăng nhập bằng email (không có username). ✅ Có thể cập nhật email bất cứ lúc nào. ✅ Sau khi đổi email, người dùng phải đăng nhập bằng email mới.

Đây là một cách tiếp cận tốt cho các hệ thống cần sự linh hoạt về email mà không cần quản lý username riêng. Nếu bạn có bất kỳ câu hỏi nào, hãy để lại bình luận nhé! 🚀

Bình luận (0)

Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough

Bài viết liên quan

Learning English Everyday