4

我正在使用 Grails 2.2.0 开发一个 Web 应用程序,它通过调用另一个后端服务器的已实现 API 执行所有操作。这意味着,所有的事情,甚至是身份验证和所有相关的事情,都是通过 API 和相应的后端服务器完成的。

现在我想使用 SpringSecurity 或 Apache Shiro 插件进行身份验证和角色管理等,但我遇到的所有这些都是使用与数据库相关的domain类,这不是我打算做的......有没有可能在没有数据库连接的情况下使用这些插件中的任何一个,而无需高度自定义它们?或者是否有另一个我不知道的插件可以带来我需要的“无忧”功能?

我希望问题本身足够清楚,否则请不要犹豫,向我询问进一步/更好地解释我的问题:)

4

2 回答 2

4

Spring Security Core 插件默认使用域类和数据库,但使用自定义实现很容易自定义用户和角色数据的来源UserDetailsService。文档中有一个完整的章节

我还讨论了自定义插件,并包含了一个自定义身份验证提供程序的示例。这里有一个示例应用程序和谈话视频的链接。

于 2013-01-28T08:55:05.643 回答
1

Apache Shiro 插件不会强制您使用域类或数据库。您可以拥有一个Shiro 领域(将其放在 grails-app/realms 中),它将身份验证和授权委托给后端服务器。这应该是这样的:

class BackendServerRealm {
   def authenticate(authToken) {
       // call backend authentication with credentials from authToken
       def user = backednService.authenticate(authToken.username, authToken.password)
       ...
       new SimpleAccount(user.username, user.password, "BackendServerRealm")
   }
}

Shiro 只是为您提供执行身份验证和授权的基础设施,但您可以很容易地插入自己的实现

于 2013-01-28T08:23:12.353 回答