Spring ApacheShiro在技术堆栈中属于哪里?

Spring ApacheShiro在技术堆栈中属于哪里?,spring,security,spring-security,ws-security,shiro,Spring,Security,Spring Security,Ws Security,Shiro,如果这已经在某处得到了回答,我表示歉意——我似乎找不到合适的答案来回答我的问题。这是 我目前正在开发一个可以通过REST访问的应用程序。我当前的teck堆栈如下所示: 表示层-在REST中公开功能 服务层—负责所有业务逻辑,以及 持久层-负责所有DAO和数据库相关事务 所有这些(包括Shiro)都是使用Spring的IoC自动编写的 Shiro目前连接到表示层,确保所有调用都受到保护。我的问题是:这是正确的方法吗?将其应用于服务层,甚至应用于持久性层,有意义吗? 非常感谢。shiro最大的优

如果这已经在某处得到了回答,我表示歉意——我似乎找不到合适的答案来回答我的问题。这是

我目前正在开发一个可以通过REST访问的应用程序。我当前的teck堆栈如下所示:

  • 表示层-在REST中公开功能
  • 服务层—负责所有业务逻辑,以及
  • 持久层-负责所有DAO和数据库相关事务
所有这些(包括Shiro)都是使用Spring的IoC自动编写的

Shiro目前连接到表示层,确保所有调用都受到保护。我的问题是:这是正确的方法吗?将其应用于服务层,甚至应用于持久性层,有意义吗?


非常感谢。

shiro最大的优点是它可以在任何级别使用。唯一真正需要的是登录用户的想法。在web框架中,这通常会使用标准servlet HttpSession来绑定它,但这不是必需的

在我们的应用程序中,我们在表示级别使用它来检查用户是否具有查看前端页面的适当权限

在业务逻辑级别,我们在自定义逻辑中调用SecurityUtils.getSubject().isPermitted(“somepermissionstring”)之类的东西,以确保当某个按钮意外对该用户可见时,该用户不能调用该方法

在前端代码中,我们使用与业务逻辑相同的思想。 它对我们来说就像一个符咒

因此,要回答您的问题(IMHO):

  • 这是正确的方法吗?->对
  • 将其应用于服务层是否合理->是,如果您需要非常严格的安全检查
  • 更重要的是,对于持久性层?->大概您必须扪心自问,服务层上的安全性是否不够,例如,如果您将持久性层暴露给一些没有经过服务层的代码。我们不保护持久层,因为我们只通过服务层访问它

为拼写错误道歉-我对最后一个问题的意思是:“而且,更重要的是,对持久性层?”用我对持久性层的看法更改了答案