2011-11-02 43 views
8

Tôi có một kịch bản mà tôi đang cố gắng kết hợp bảo mật mùa xuân với áo cho API REST của tôi.kết hợp bảo mật mùa xuân 3 với phần còn lại của áo api

nhu cầu của tôi là khá phức tạp (tôi nghĩ) và nó được như sau:

an ninh mùa xuân đang được sử dụng để đánh chặn các url và buộc xác thực cơ bản để truy cập vào một tài nguyên REST. Điều này có vẻ là ok như tôi đang sử dụng http khách hàng để kiểm tra này. Tuy nhiên những gì tôi muốn làm là bằng cách nào đó truy cập đối tượng người dùng được tải để kiểm tra một số quyền bổ sung treo người dùng (đối tượng bản đồ với cờ boolean để cho biết thuộc tính đối tượng có hiển thị hay không). Mã thực hiện công việc tải, nhưng sau khi mùa xuân xác thực làm thế nào để tôi truy cập đối tượng User trong chính phương thức REST Resource thực tế? Điều này có thể không?

Vì vậy, các bước như sau:

1) Khách hàng thực hiện cuộc gọi API REST kiểm tra 2) chặn Xuân URL username và mật khẩu được cung cấp trong tiêu đề http 3) Phương pháp tài nguyên còn lại sau đó được truy cập nếu thông tin hợp lệ là Nhưng trước khi bước 3, tôi muốn bằng cách nào đó chuyển đối tượng User đã tải vào chính phương thức Resource thực để tôi có thể áp dụng một số logic để hạn chế những gì người dùng có thể thấy dựa trên các quyền mà tôi đã nạp? ? Điều này có thể không? Tôi nghĩ rằng tôi đã nhìn thấy một số mã ở đâu đó để kiểm tra các vai trò người dùng trước khi một phương thức được truy cập bằng cách sử dụng Spring và REST nhưng nếu có bất kỳ liên kết hoặc ý tưởng nào tuyệt vời.

Vui lòng trợ giúp nếu bạn có thể. cảm ơn bạn rất nhiều.

Trả lời

5

Tôi đã giải quyết vấn đề này bằng cách sử dụng proxy có phạm vi yêu cầu được xây dựng bởi một nhà máy sản xuất đậu.

Điều này cho phép bạn chỉ cần tiêm người dùng hiện đã được xác thực của bạn vào bất kỳ bean được quản lý vào mùa xuân nào và trong trường hợp của tôi, Tài nguyên Jersey của tôi rơi vào danh mục đó. Tôi đã đưa người dùng của mình vào tầng bên dưới các tài nguyên, nhưng tất cả đều giống nhau.

Someone else elegantly blogged the full solution here.

+0

cảm ơn @Derek troy-West. Tại chỗ trên câu trả lời tuyệt vời này là những gì tôi đã làm. – user983022

+0

không phải lo lắng, bạn được chào đón. –

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