Spring Boot 桌面独立应用程序中的 Apache Shiro

Posted

技术标签:

【中文标题】Spring Boot 桌面独立应用程序中的 Apache Shiro【英文标题】:Apache Shiro in Spring Boot Desktop Standalone Application 【发布时间】:2016-11-20 00:20:21 【问题描述】:

我曾经在一个桌面独立应用程序中成功实现了 Apache Shiro(没有 Spring 框架或任何与此相关的框架)。

我使用 INI 文件来获取 SecurityManager,如下所示:

Factory<org.apache.shiro.mgt.SecurityManager> factory = new IniSecurityManagerFactory(
                            "classpath:resources/shiro.ini");
org.apache.shiro.mgt.SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager);
Subject currentUser = SecurityUtils.getSubject();

我在 *** 的一篇文章中读到,在使用 spring 时不建议使用 shiro INI。

在我的例子中,我现在在这个应用程序中使用 Spring Boot 和 Spring Data JPA 和 Hibernate。配置 Apache Shiro 的最佳方式是什么,以便我可以最大限度地利用这个安全框架。

编辑

我遇到的所有示例,都显示了网络示例。我需要专门用于独立应用程序。示例将不胜感激。

解决方案

在从这篇文章中学习和回答之后,我设法提出了this solution 并创建了 github 存储库。如果有人想让它变得更好,请成为我的客人。

【问题讨论】:

【参考方案1】:

据我所知,如果您正在开发基于 Web 的应用程序或独立的应用程序,除非您在此处看到 webfilters official Apache shiro doc,否则此示例显示了如何为基于 Web 的两者正确配置 apache shiro和独立的。

您仍然可以使用基于 xml 的配置,as is described here 与 spring boot 并使用标签或构造函数参数轻松将配置从 INI 文件迁移到 XML,如下所示 spring xsd doc

在我看来,使用 INI 文件或基于 XML 的配置具有相似的优点和缺点,在这两种方法中,您都可以“热交换”bean 配置。

例如,如果您使用 Java 或在代码上配置 Shiro 很容易,您可以查看这个 github link,在那里您可以看到 apache Shiro spring-boot 应用程序的示例类配置。

忘记网络过滤器并配置其他bean,因为它应该可以正常工作。

据我所知,在 Spring Boot 中使用 xml 或类配置没有好的或陈旧的方式,它只取决于您的需求。

最后,我编写了一个简单的示例Spring-boot-standalone with shiro. 来演示基于 XML 的配置,这将打印领域 bean 以显示上下文已启动,并且已注释代码以满足您的需求,其余的必须是完整的 bean使用 shiro 网页教程。

伟大的。

【讨论】:

我试图用你提供的东西想出一个 springboot-shiro 项目。虽然我在登录时遇到问题。我已经发布了另一个问题here。如果你有时间,请检查一下。【参考方案2】:

您可以使用 yml 文件来添加 shiro 配置以及应用程序属性。 举个例子,看看https://github.com/johntostring/spring-boot-shiro

【讨论】:

以上是关于Spring Boot 桌面独立应用程序中的 Apache Shiro的主要内容,如果未能解决你的问题,请参考以下文章

如何在Spring Boot中的所有测试用例之前只设置一次独立控制器?

独立使用时 spring-boot-starter-jdbc 的问题

Spring Boot 应用程序中的 SymmetricDS

Gradle maven-publish 不构建独立的 spring-boot 应用程序

使用独立 Tomcat 的 Spring Boot 容器身份验证

使用 Spring Boot 服务作为批处理作业中的依赖项的空指针异常