转到 Apache Shiro 并留下 Java EE 的本机API以进行安全性和会话管理会有什么好处?
我发现所有安全角色和会话都可以在Apache Shiro中完成,但同样的事情也可以使用Java EE安全性完成,而不需要任何外部依赖关系jar。
所以建议我去Apache Shiro的一些优点和缺点。
答案 0 :(得分:15)
我当然有偏见(我是Apache Shiro项目的提交者),所以请按照您的意愿选择,但这是我的意见:
Java EE Security不支持开箱即用的与容器无关的会话群集选项(Shiro确实如此)。
Shiro从一开始就设计为在POJO /依赖注入环境中工作。它使用接口驱动的设计,并提供比传统Java EE安全环境更多的自定义钩子(例如,如何显示当前有多少用户使用Java EE安全性登录到您的站点?Shiro可以帮助您显示这一点。)
Shiro可在任何应用程序环境中完全移植。如果您使用特定于Java EE供应商的安全性自定义,则那些不可移植(例如,此StackOverflow question表明切换到JBoss可能会解决用户的安全问题 - 这是一个令人不安的答案IMO)。
与服务器特定的自定义相同,许多Java EE安全性tutorials,articles和blog articles显示基于用户界面的配置,它可以解决不同的问题。跨平台的方式,如果你切换,重新学习可能会令人沮丧。此外,Java EE配置通常需要XML。我更喜欢一个单一的,非冗长的文本配置格式,我可以在任何地方使用(shiro.ini很好,但人们也配置shiro与groovy,yaml等)。
Shiro旨在任何应用程序环境中工作。 Java EE安全性设计得很好 - 仅适用于Java EE。至少在学习Shiro时,您可以在任何基于JVM的应用程序(Spring,Guice,Java EE,命令行等)中利用这些知识,而不仅仅是Java EE应用程序。
HTH!
莱斯