Hướng tối ưu để lưu quyền của user trong kiến trúc Rest API

Chào mọi người ạ, Hiện tại thì em đang làm một dự án có sử dụng Rest API và có phân quyền người dùng, và em dùng JWT để bảo vệ API của em, em hiện đang có thắc mắc là nên lưu quyền của người được đăng nhập ở đâu khi truy xuất API ạ, em có 2 hướng:

  1. Lưu trong token, khi request được gửi kèm token, bên Back End sẽ verify token đó để lấy role.
    (Nhược điểm: Khi người dùng bị sửa quyền, token vẫn giữ role cũ, phải đăng xuất ra đăng nhập lại)
  2. Khi request được gửi kèm token, bên Back End sẽ verify token đó để lấy ra userID, sau đó tìm role của user đó trong database.
    (Nhược điểm: Lấy được quyền mới nhất của người dùng, nhưng API sẽ phản hồi chậm do phải làm một bước quét database để lấy quyền)

Theo mình thì nên lưu trong token, chuyện user tự nhiên bị sữa role là rất hiếm hoặc ảnh hưởng nhỏ vì token có thời hạn. Thử nghĩ nếu mỗi request đều query database thì JWT không còn nhiều ý nữa lắm.

1 Like

Bạn đã tự biết ưu và nhược điểm rồi còn gì, tự cân đo cái nào quan trọng hơn đi.
Bạn sẽ giải thích sao khi mà user bị cắt quyền nhưng 5p sau vẫn thao tác được
ttl bao lâu, redis cache,…

3 Likes

bạn lưu quyền vào redis. lưu theo user_id. khi người dùng request lên thì lấy user_id trong token người dùng gửi lên. rồi lấy quyền được lưu trong redis theo user của người dùng

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?