2013-08-09 30 views
8

Tôi đang xây dựng một ứng dụng bằng cách sử dụng App Engine với Jersey. Tôi muốn sử dụng chú thích @RolesAllowed(Role_user) cho phép tạo bộ lọc trong yêu cầu.Cách lấy đối tượng phiên trong ContainerRequest để có thể sử dụng chú thích @RolesAllowed (Role_user)?

Vấn đề là chúng ta cần định cấu hình lớp SecurityContextFilter.

Mục tiêu của tôi là lấy số id của người dùng được lưu trữ trong một phiên để sau đó kiểm tra vai trò của họ trực tiếp trong số function : public ContainerRequest filter(ContainerRequest request) trong lớp học của tôi SecurityContextFilter.

Tôi cần phải tiêm HttpRequest để nhận phiên, nhưng khi tôi tiêm, tôi nhận được ngoại lệ Java.lang.Null.

Tôi muốn lấy đối tượng phiên trong lớp ContainerRequest.

Tôi làm cách nào để thực hiện việc này?

EDIT:

Tôi có tìm một giải pháp cho vấn đề này nhưng tôi không biết nếu điều này là sạch: Bạn có thể tiêm các HttpRequest trực tiếp trong hàm: isUserInRole (_role) Vì vậy, tôi sử dụng này và tôi nhận được userId của tôi theo phiên sau đó nhận vai trò người dùng và tôi kiểm tra xem đó có khớp với _role và trả về true hay false.

+0

Tôi nghĩ rằng tôi có cùng một vấn đề .. Bạn cố gắng tiêm HttpRequest với @Context riêng HttpServletRequest httpRequest; .. đúng? Tôi đã thử theo cách này và httpRequest là null bên trong bộ lọc –

+1

Có! Đó là chính xác những gì tôi cố gắng làm! Nhưng tôi vẫn không có phản ứng. Nếu bạn có một giải pháp cho vấn đề này, bạn có thể cho tôi biết. – FlavienBert

+0

nope .. Tôi chưa tìm thấy bất kỳ điều gì .. –

Trả lời

1

tôi khá không chắc chắn cho dù bạn có thể tiêm một HttpServletRequest trên đầu trang của ContainerRequestFilter trong áo nhưng bạn vẫn có thể làm điều đó theo chương trình thay vì sử dụng các chú thích:

@Override 
public ContainerRequest filter(ContainerRequest request) { 
    if(request.isUserInRole("SOME_ROLE")){ 
    //process some treatement 
    } 
    return request; 
} 

BR.

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