Share & grow the worlds knowledge!
We want to connect the people who have knowledge to the people who need it, to bring together people with different perspectives so they can understand each other better, and to empower everyone to share their knowledge.
1 Answer
Trường hợp 1: Em lưu token ở cookie, theo cách này thì nên logout ở server sử dụng cơ chế redirect, ví dụ code logout cho server sẽ thế này:
@Authenticated @DoPost("/logout") public Redirect logoutPost( HttpServletRequest request, @AdminId long adminId ) { adminService.removeAdminAccessToken(adminId); return redirectToLogin(request); } public static Redirect redirectToLogin(HttpServletRequest request) { Cookie tokenCookie = new Cookie("adminAccessToken", ""); tokenCookie.setPath("/"); tokenCookie.setMaxAge(0); Cookie tokenCookieExpiredAt = new Cookie("adminAccessTokenExpiredAt", "0"); tokenCookieExpiredAt.setMaxAge(0); tokenCookieExpiredAt.setPath("/"); return Redirect.builder().uri(HttpRequests.addLanguageToUri(request, "/login")).addCookie(tokenCookie).addCookie(tokenCookieExpiredAt).build(); }
Server sẽ loại bỏ token khỏi cơ sở dữ liệu sau đó gọi hàm setMaxAge để làm hết hạn token cookie và token cookie sẽ được tự động loại bỏ khỏi trình duyệt.
Lưu ý: Phải loại bỏ xong accessToken khỏi db, sau đó mới điều hướng, làm như vậy để đảm bảo rằng access token đã được loại bỏ hoàn toàn và bắt buộc người dùng phải đăng nhập để tạo access token mới.
Server cũng sẽ trả về mã 302 cho trình duyệt, trình duyệt khi thấy mã 302 sẽ tự động điều hướng sang trang home và em không cần code thêm bất cứ thứ gì cả.
Trường hợp 2. Em lưu tooken ở localStorage, theo cách này em có thể gọi API logout để nhận về mã 200 hoặc 204, em sẽ cần chờ cho đến khi nhận được phản hồi từ server để remove token khỏi localstorage sau đó mới điều hướng sang trang home.
Nhưng anh thấy việc lưu accessToken ở localStorage không tiện vì mỗi lần gọi API lại phải add vào header, trong khi dùng cookie nó tự động được luôn. Ngoài ra cookie nó còn liên quan đến làm SSO nữa, localstorage chưa chắc đã làm được. Hiện tại anh chưa có dự án nào lưu access token ở localstorage cả, anh toàn lưu ở cookie thôi.
-
0
- Reply
- ở đây e k thấy anh có await ở trước hàm removeAccessToken, vậy có nghĩa là mình sẽ ưu tiên trả luôn lệnh redirect về cho web điều hướng, mà không cần chờ lệnh xoá Db thành công đúng k?
- e hỏi về cách thiết kế hệ thống tại sao lại cần 1 bảng để lưu token. thường thì e làm khi login success thì gen ra jwt trả access token cho web là xong. chưa hiểu tại sao lại cần có bảng để lưu access token
- Questions 1.0K
- Answers 2.2K
- Best Answers 131
- Users 486
Related Questions
Recent Activities
-
Voted up question. January 9, 2023 at 2:54 pm
-
Voted up question. January 9, 2023 at 2:54 pm
-
Voted up question. January 9, 2023 at 2:54 pm
-
Voted up question. January 9, 2023 at 2:54 pm
-
Voted up question. January 9, 2023 at 2:54 pm