Apache Shiro 在技术堆栈中属于啥位置?

Posted

技术标签:

【中文标题】Apache Shiro 在技术堆栈中属于啥位置?【英文标题】:Where does Apache Shiro belongs in a tech stack?Apache Shiro 在技术堆栈中属于什么位置? 【发布时间】:2014-07-26 09:59:31 【问题描述】:

如果这个问题已经在某个地方得到了解答,我深表歉意 - 我似乎无法找到合适的答案来回答我的问题。来了……

我目前正在开发一个可通过 REST 访问的应用程序。我目前的技术栈如下:

表示层 - 在 REST 中公开功能 服务层 - 处理所有业务逻辑,以及 持久层 - 处理所有 DAO 和数据库相关事务。

所有这些(包括 Shiro)都是使用 Spring 的 IoC 自动编写的。

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

非常感谢。

【问题讨论】:

【参考方案1】:

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

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

在业务逻辑级别,我们在自定义逻辑中调用诸如 SecurityUtils.getSubject().isPermitted("somepermissionstring") 之类的东西,以确保当按钮意外对用户可见时用户无法调用方法。

在前端代码中,我们使用与业务逻辑相同的想法。 它对我们来说就像一种魅力。

所以回答你的问题(恕我直言):

这是正确的方法吗? -> 是的 将其应用于服务层是否有意义 -> 是的,如果您需要非常严格的安全检查! ,更重要的是,持久层? -> 也许。您必须问自己,服务层的安全性是否不够,例如,如果您将持久层暴露给一些不通过服务层的代码。我们不保护持久层,因为我们只通过服务层访问它。

【讨论】:

为错字道歉 - 我对最后一个问题的意思是:“更重要的是,对于 PERSISTENCE 层?” 用我对持久层的看法改变了答案

以上是关于Apache Shiro 在技术堆栈中属于啥位置?的主要内容,如果未能解决你的问题,请参考以下文章

apache shiro:在 shiro.ini 中添加啥以使用 JWT 和 keycloak 作为授权服务器进行客户端身份验证

spring mvc整合shiro无法访问控制器是啥问题

Apache Shiro 决定登录后使用啥角色

不知道是我配置的问题,还是啥问题,谁知道shiro安全框架sampleRealm的配置?

Cas(用于身份验证)+ OpenLDAP(用于用户名、密码+角色和权限)+ Apache Shiro(用于授权)

静态成员存储在内存中的啥位置? C#.Net中的堆栈/堆[重复]