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 应用程序