簡體   English   中英

在Java中使用批注進行授權檢查

[英]Using Annotation for Authorization Checks in Java

我的課堂上有一些類似以下的方法:

addOrder(long orderId){...}
updateOrder(long orderId, int qty){...}
deleteOrder(long orderId){...}

我想向他們添加授權行為。 例如:僅當您是Order的所有者時,才可以updateOrder。 僅當您是付費用戶時,才可以添加訂單。 僅當您的訂單狀態為“新”時,您才能刪除訂單。

做這個的最好方式是什么? 我們可以使用注釋嗎?

@checkAuthorization
addOrder(long orderId){...}

@checkAuthorization
updateOrder(long orderId, int qty){...}

@checkAuthorization
deleteOrder(long orderId){...}

checkAuthorization注釋的存在本身應該導致對自定義方法的調用,該方法將在我檢查是否允許此調用的地方實現。

如果沒有注釋,還有其他最佳實踐嗎?
如果重要的話,此代碼存在於Web應用程序(Struts-1)中。

可以使用面向方面的編程(AOP)來執行類似的檢查。 一個實際的實現是Spring Security 您還可以使用訪問控制列表(ACL)或自定義實現檢查對象權限 為此,您可以使用Spring Expression Language引用參數:

@PreAuthorize("#c.name == authentication.name")
public void doSomething(@P("c") Contact contact);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM