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

标签 java spring hibernate javafx-8 shiro

我曾经在桌面独立应用程序中成功实现了 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();

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

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

编辑

我遇到的所有示例都显示了网络示例。我专门需要独立应用程序。示例将受到高度赞赏。

解决方案

经过这篇文章的大量学习和回答,我设法想出了 this solution并创建了 github 存储库。如果有人希望做得更好,请成为我的客人。

最佳答案

据我了解,如果您正在开发基于 Web 的应用程序或独立应用程序,则不会嘀咕,除非用于 Webfilters official Apache shiro doc正如您在此处看到的,此示例展示了如何为基于 Web 和独立的 apache shiro 正确配置。

您仍然可以使用基于 xml 的配置,as is described here使用 Spring Boot,可以使用诸如 或 constructor-args 之类的标签轻松将配置从 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 以显示上下文已启动,并已注释代码来满足您的需求,其余部分必须使用 shiro 网页教程来完成 bean。

问候。

关于java - Spring Boot 桌面独立应用程序中的 Apache Shiro,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38418983/

相关文章:

Java API/util 查找不安全字符并将其替换为百分比编码形式?

java - 为什么我不能访问我的静态列表中的数据?

java - Spring 数据 jpa,jparepository 返回字符串列表代替 DTO 对象

java - Hibernate 5.2 和 Spring 4.3,非 JPA - javax.persistence.TransactionRequiredException : no transaction is in progress

java - 将两个 HashMap 组合成第三个

java - 如何使用 Java 流计算两个聚合函数?

sql - 在oracle中使用时间戳比较两个日期

java - 如何使用 AliasToEntityMapResultTransformer 获取订单映射?

java - 仅获取 Criteria 查询中的实体 ID

java - 无法通过 Java 检索存储过程返回值