2010-06-18 35 views

Trả lời

7

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.

+0

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

+0

@KPthunder: Đừng lo, tôi rất vui vì nó phù hợp với bạn! – bguiz

+0

Nevermind, tôi đã nhận diện ngay bây giờ! – KPthunder

0

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.

1

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.

Các vấn đề liên quan