關於如何設置JAX-RS API,有很多很好的資源和文獻資料。但是,我還沒有找到任何資源能夠恰當地描述如何對特定資源和方法進行安全限制。例如,給定資源PictureResource
,只有圖片上傳者(和管理員)應該能夠刪除或更改與圖片相關的屬性,而任何人都應該能夠查看圖片。管理員限制是好的,因爲它可以通過roles解決,但是上傳者將取決於呼叫的上下文。然後標識用戶的令牌將描述誰正在進行呼叫。這可以通過ContainerRequestFilter來解決。JAX-RS和資源所有權限制
@Path("pictures/{pictureId}")
public class PictureResource {
@GET
public Response getPicture(@PathParam("pictureId") final int pictureId) {
// Get the picture, available for all users.
}
@DELETE
public Response deletePicture(@PathParam("pictureId") final int pictureId) {
// Delete the picture, only available for the uploader of the picture and admins.
}
// ...
}
解決此問題的JAX-RS方式是什麼?我假設這可以通過註釋來解決,但是對於我來說這非常模糊。另一種方法是根據呼叫的上下文動態地爲用戶分配一個pictureOwnerRole?
你見過[這](http://stackoverflow.com/q/26777083/2587435) –
該職位幾乎是第二個鏈接我在我的崗位了,但更多的闡述。就我而言,我想根據調用的上下文進行限制。例如,登錄的用戶AND是允許刪除圖片的圖片的上傳者。 – Martin
由於您知道呼叫您的終端用戶以及上傳圖片的用戶,因此我認爲您的方法中會出現一個簡單的「if」條件。而且,如果用戶不允許執行該操作,只需拋出['ForbiddenException'](http://docs.oracle.com/javaee/7/api/javax/ws/rs/ForbiddenException.html)。 –