【问题标题】:spring-hibernate service/dao security design queryspring-hibernate service/dao安全设计查询
【发布时间】:2011-05-13 21:08:28
【问题描述】:

我正在尝试创建各种服务,例如:

UserService
UserPermissionService
AddressBookService

哪一个会访问 dao,例如:

UserDao
UserPermissionDao
AddressBookDao
CompanyDao

这些将使用 Spring-Hibernate 堆栈并打包在一个后端 jar 中以供多个 webapps 使用。我希望服务功能可用,具体取决于调用用户对象的权限。此外,调用者(用户)对象将拥有调用用户的权限。

查询:我是否应该将 Caller 传递给每个 Service 方法调用,然后检查其权限?或者有没有更好的方法使用“Spring/AOP”和/或“工厂模式”,其中调用者对象可以用于服务方法。

【问题讨论】:

    标签: java hibernate spring design-patterns


    【解决方案1】:

    这种情况的一种模式是将安全令牌存储在 ThreadLocal 中,并首先在服务方法中要求该令牌的相应权限。

    【讨论】:

    • 谢谢,你让我想到了正确的方向。查看以下问题后:stackoverflow.com/questions/2218282/… -> 我认为会话范围的 Caller 对象在这种情况下是最好的。这本身将被注入到服务实现中。
    • 我们在应用程序中实现这一点的方式是允许应用程序代码(我们的或通过我们的服务 API 的第 3 方)调用服务并记录通过服务方法执行的审计日志配置更改来电。但是对于来自 Web 应用程序的请求,我们确实是通过 HttpServletRequest 中的 getUserPrincipal() 获取用户。
    猜你喜欢
    • 2014-02-24
    • 2011-03-24
    • 1970-01-01
    • 2013-10-17
    • 2011-01-27
    • 2010-12-07
    • 2012-09-20
    • 2011-05-06
    • 2021-03-17
    相关资源
    最近更新 更多