【问题标题】:Using Annotation for Authorization Checks in Java在 Java 中使用注解进行授权检查
【发布时间】:2014-10-05 01:43:45
【问题描述】:

我的班级中有一些方法如下:

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

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

最好的方法是什么? 我们可以使用注解来做到这一点吗?

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

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

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

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

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

【问题讨论】:

  • 这个问题有答案吗?

标签: java jakarta-ee web-applications annotations


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    • 2011-12-06
    • 2021-11-16
    • 2014-05-20
    • 2021-06-09
    • 2020-12-17
    • 1970-01-01
    相关资源
    最近更新 更多