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