Sau khi người dùng mới gửi biểu mẫu 'Tài khoản mới', tôi muốn đăng nhập thủ công người dùng đó để họ không phải đăng nhập trên trang tiếp theo.
Trang đăng nhập biểu mẫu bình thường thông qua bộ chặn bảo mật mùa xuân hoạt động tốt.
Trong bộ điều khiển biểu mẫu tài khoản mới, tôi đang tạo UsernamePasswordAuthenticationToken và đặt nó trong SecurityContext theo cách thủ công:
SecurityContextHolder.getContext().setAuthentication(authentication);
Trên cùng trang đó, sau đó, tôi kiểm tra xem người dùng đã đăng nhập bằng:
SecurityContextHolder.getContext().getAuthentication().getAuthorities();
Điều này trả về các cơ quan mà tôi đã đặt trước đó trong xác thực. Tất cả đều tốt.
Nhưng khi mã tương tự này được gọi trên trang tiếp theo mà tôi tải, mã xác thực chỉ là UserAnonymous.
Tôi không rõ tại sao nó không giữ xác thực mà tôi đã đặt trong yêu cầu trước đó. Có suy nghĩ gì không?
- Nó có thể liên quan đến phiên ID không được thiết lập đúng cách?
- Có điều gì đó có thể đang ghi đè xác thực của tôi bằng cách nào đó không?
- Có lẽ tôi chỉ cần một bước nữa để lưu xác thực?
- Hoặc có điều gì đó tôi cần làm để khai báo xác thực trong toàn bộ phiên thay vì một yêu cầu duy nhất bằng cách nào đó?
Tôi chỉ đang tìm kiếm một số suy nghĩ có thể giúp tôi thấy những gì đang xảy ra ở đây.
SecurityContextHolder.getContext().setAuthentication(authentication)
. Nó hoạt động và phổ biến, nhưng có những thiếu sót nghiêm trọng về chức năng mà bạn sẽ gặp nếu chỉ làm như vậy. Để biết thêm thông tin, hãy xem câu hỏi của tôi và câu trả lời: stackoverflow.com/questions/47233187/…