Author user vừa bằng JWT vừa bằng session với 1 Spring security

Chào các bác,
Em có làm 1 web bán hàng gồm phần admin và phần dành cho user thông thường như mọi web khác.

  • User thông thường: Angular + REST api:
    – Authen xong thì server spring boot return về token cho browser lưu lại.
    – Mọi private API khác phải cần token.
  • User là admin: JSP

Em đang gặp vấn đề là không biết authen cho admin như thế nào? Em có 2 cách:

  1. Nếu GUI admin là server side rendering bằng JSP thì vẫn sử dụng cách authen các resource bằng token. Sử dụng JQuery để ajax call API (trong header thêm token vào, tư duy như làm app SPA)
    => Cách này hơi khó vì API trả về JSON, phải dùng JQuery update lại DOM rất cực
  2. Author bằng session, cách làm như những web truyền thống, nếu như làm bằng jsp/servlet thì cần tạo một filter để lọc request kiểm tra xem có phải admin không trước khi return về giao diện nhưng spring đã có spring security rồi nên không cần tạo thủ công filter nữa. Em muốn dùng cách này hơn mà không biết cách cài đặt spring security vì spring security đang config theo cách authen bằng token, nêú thêm filter session thì làm như thế nào?

(Quy mô đồ án môn học ạ)

Em cảm ơn!

cách 2 thì bạn update dom kiểu gì, html thuần cho đỡ cực?
hay với các 2 thì bạn không cần dùng ajax?

1 Like

Dạ cách 2 thì không cần sử dụng bất kỳ thư viện javascript nào luôn ạ.
Em ví dụ: trang admin cần xem danh sách sản phẩm.

  • Cách 2 là JSP của java có bộ thẻ JSTL, trong bộ thẻ này có hỗ trợ sẵn thẻ for, thẻ if else, … code java và code HTML chung với nhau, server compile ra HTML/CSS thuần túy rồi mới response về cho browser (client gửi 1 request thôi mà nhận về giao diện vừa có data vừa có html, css).

Cách 2 em không cần update DOM, server gửi UI sao browser dùng vậy, muốn edit sản phẩm thì qua page mới.

  • Nhưng nếu theo cách 1 thì browser phải gửi request tới 2 lần. Lần 1 request tới trang JSP để lấy giao diện mà không có data, download bộ khung giao diện xong rồi ajax mới request tiếp lần 2 để lấy danh sách sản phẩm dạng JSON rồi mới cập nhật data vào DOM.

có một sự hiểu lầm nhẹ ở đây
việc bạn gọi ajax không nhất thiết phải dùng jwt để xác thực
khi gọi ajax thì vẫn có thể auth bằng session

và việc chọn cách đổ data ra page ngay từ đầu, với việc gọi ajax để lấy data sau khi đã render
2 việc này là tuỳ vào bạn, tuỳ vào businesss, design…
nên dừng mang ưu điểm hay nhược điểm ra để so sánh

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