在Java中使用Annotation进行授权检查

时间:2014-08-12 05:19:59

标签: java java-ee web-applications annotations

我的课程中有以下几种方法:

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

我想向他们添加授权行为。例如: 只有您是订单的所有者,才能更新订单。 只有您是付费用户,才能添加订单。 只有当您的订单处于状态' NEW'时,您才能删除订单。

最好的方法是什么? 我们可以使用Annotations吗?

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

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

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

checkAuthorization注释存在本身应该导致调用我将实现的自定义方法,其中我检查是否允许此调用。

如果不是注释,还有其他最佳做法吗? 如果重要,则此代码存在于Web应用程序(Struts-1)中。

1 个答案:

答案 0 :(得分:0)

可以使用面向方面的编程(AOP)来执行类似的检查。实际的实现是Spring Security。您还可以使用访问控制列表(ACL)或自定义实现检查object permissions。为此,您可以使用Spring Expression Language引用参数:

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