Có thể có nhiều phương thức xác thực cho một servlet java không? Ví dụ: có xác thực dựa trên biểu mẫu ngoài chứng thực dựa trên số open id để người dùng có thể chọn cách họ đăng nhập.Nhiều phương thức xác thực servlet java
Trả lời
Có.
Tuy nhiên, tôi khuyên bạn nên làm điều này bằng cách sử dụng bộ lọc servlet thay vì trên chính servlet.
http://brendangraetz.wordpress.com/2010/06/17/use-servlet-filters-for-user-authentication/
theo các bước trong bài đó, và ghi đè lên các phương pháp isAuth()
như vậy mà nó thực hiện việc xác thực trong tuy nhiên nhiều chế độ bạn muốn. Trong (rất thô, chưa được kiểm tra) mã:
@Override protected boolean isAuth()
{
String authMode = (String)(getSession(true).getAttribute("authMode"));
if (authMode == null) { return false; }
if (authMode.equals("open id") {
//do open id authentication steps here
//return true if authentication passes
}
else if (authMode.equals("some other authentication") {
//do some other authentication steps here
//return true if authentication passes
}
...
return false;
}
Tôi giả định tất nhiên là bạn đã biết cách triển khai các bước xác thực trong từng chế độ riêng lẻ.
"Bí quyết" là lưu trữ giá trị trong phiên HTTP, ngay sau khi người dùng thực hiện xác thực đăng nhập, trong phiên HTTP. Dựa trên giá trị này, bộ lọc sẽ biết những gì nó nên kiểm tra hoặc truy vấn bất cứ điều gì bạn chỉ định trước khi tải servlet.
Có thể, nhưng có vẻ khó thực hiện một chút. Ví dụ, SpringSecurity out-of-the-box có hỗ trợ cho xác thực địa phương, OpenId, X509 và các chương trình khác, nhưng kết hợp chúng để người dùng có cách thay thế đăng nhập đòi hỏi các lớp tùy chỉnh và dây tùy chỉnh.
Một cách khác để thực hiện nhiều xác thực là với JAAS, dịch vụ Xác thực và ủy quyền Java. Sử dụng JAAS, bạn có thể ngăn xếp các mô-đun xác thực khác nhau trên đầu trang của nhau và bạn có thể định cấu hình mô-đun xác thực nào để chạy và không chạy mô-đun nào. Điều này được gọi là PAM (mô-đun xác thực có thể cắm được). Tìm kiếm "J2SE JAAS" trên Google hoặc xem http://server.pramati.com/docstore/1270002/index.htm. Những điều này sẽ giúp bạn bắt đầu nếu bạn quyết định đi tuyến đường này.
- 1. Phương thức xác thực nhiều PostgreSQL
- 2. Xác thực jQuery - Ghi đè phương thức xác thực lõi
- 3. Thực hiện xác thực cơ sở HTTP trong servlet
- 4. RESTful using Jersey: phương thức POST nhiều thực thể
- 5. Chạy nhiều phương thức chính java trong eclipse
- 6. Chúng ta có thể gọi phương thức service() từ phương thức destroy() trong Servlet không?
- 7. Phương thức tùy chỉnh plugin xác thực jQuery. Nhiều thông số
- 8. Chuyển nhiều phương thức (delegate?)
- 9. Thực hành tốt nhất của Junit: Phương thức công khai gọi nhiều phương thức riêng tư
- 10. Gọi System.exit() trong phương thức destroy() của Servlet
- 11. phương thức compareTo java
- 12. Sử dụng OpenID là chỉ phương thức xác thực
- 13. Thực hiện một phần phương thức trên nhiều cụm
- 14. Doctrine 2, phương thức thực thể không xác định findOneBy *
- 15. phương thức xác thực jquery cho số CVV
- 16. Ghi đè phương thức xác thực - Quản trị Django
- 17. Xác thực tham số theo phương thức không đồng bộ
- 18. Phương thức tùy chỉnh với plugin Xác thực jQuery
- 19. Phương thức xác thực tham số với JSR-303
- 20. Xác thực XML dựa vào XSD theo một phương thức
- 21. Kiểm tra đơn vị một Servlet Java
- 22. Xác thực proxy Java
- 23. Tạo phương thức hashCode() - Java
- 24. Xác thực biểu mẫu chuẩn Java servlets
- 25. Gọi phương thức Win32 API từ Java
- 26. Java servlet - Session cleanup (HttpServletRequest)
- 27. Gọi phương thức chụp trong Java
- 28. Ghi lại mọi phương thức thực thi
- 29. Calling nhiều phương pháp trong Java
- 30. Phương thức Java isLetterOrDigit(), isDigit(), isLetter()
Tuyệt vời, đó chính xác là những gì tôi đang tìm kiếm! Tôi ước tôi có đủ đại diện để bỏ phiếu! – KPthunder
@KPthunder: Đừng lo, tôi rất vui vì nó phù hợp với bạn! – bguiz
Nevermind, tôi đã nhận diện ngay bây giờ! – KPthunder