我需要在我正在开发的桌面应用程序中实现一个安全框架来控制身份验证和用户权限控制。我听说 Shiro 是一个简单灵活的框架。不幸的是,我只遇到过基于 Web 的应用程序示例。
我正在寻找的是如何从数据库中检索权限级别和用户,然后将它们与 Shiro 一起使用。以前有没有人开发过这样的东西,或者知道我可以检查的任何教程?我需要了解如何构建数据库表以及如何使用 Shiro 读取权限。
Shiro
不关心您的用户模型是什么样子的。它提供了接口,即Subject
和Realm
,以及它的子AuthenticatingRealm
和AuthorizingRealm
,以任何你想要的方式与该模型进行交互。
AuthenticatingRealm
的自定义实现将实现 doGetAuthenticationInfo
,在该中,您可以使用用户模型创建保存principal
或用户的身份验证信息的AuthenticationInfo
对象。
您将对授权执行类似的操作。调用 Subject#isPermitted(String)
将在堆栈的下游检查 AuthorizationInfo
对象以获取从数据库或其他源(xml、纯文本等(检索的授权信息。
因此,只需实现您自己的AuthenticatingRealm
和AuthorizingRealm
(可能在同一类中(并将它们注册到SecurityManager
。