0

我有一个使用 Grails 运行的 Web 应用程序,负责管理视图和控制器,并通过服务层调用 spring-mvc 后端(Grails 应用程序使用来自 spring-mvc 后端的服务)。现在我需要为应用程序实现 Spring Security (SS)。

在这一点上,我不知道如何结婚。后端已经有一个功能齐全的 spring 安全实现,但是为了让 Grails 应用程序工作,我需要排除来自 spring-mvc 应用程序的所有瞬态 spring 安全依赖项,并使用纯粹的 Grails 解决方案(也许这是错误的决定?) . 后端已经拥有 User 和 Role 对象,其中包含通过 User 域中的 joinTable 注释建模的 user_roles 表。

问题:

  1. 我在正确的轨道上吗?就 SS bar 使用其数据对象忽略 java 后端的所有内容,并使用带有 SS 插件的 Grails impl?我看过帖子说我什至不需要使用 Grails 插件,但它们现在已经很老了,我不确定如何注释我的控制器和服务。

  2. 如果 Grails 是这样,我不确定后端需要什么以及在 Grails 中重新实现/扩展需要什么。我在后端应用程序中有一个 SS 扩展用户和 UserDetailsS​​ervice 但不能使用它们,因为我已经完全排除了它们所依赖的所有 SS jar,所以我认为我必须自己滚动?

  3. 所以我实现了一个 UserDetails 对象,一个自定义的 UserDetailsS​​ervice(这应该实现 GrailsUserService 吗?)并将后者公开为一个 bean,一切都应该工作吗?也许是一厢情愿。

任何指导,即使是高水平的,我都会非常感激,因为我现在正在努力确定我的方法,更不用说实施了。

4

1 回答 1

0

我已经设法实现了我需要的东西来让它工作。我采用了纯粹的 Grails 方法,因此也有自己的 userDetails 实现,它的一个实例由我的自定义 userDetailsS​​ervice 返回。需要注意的一件事是,如果概念证明有效,请确保您以存储密码的格式读取密码。Spring Sec 将对您的密码进行哈希处理,以与数据库中的密码进行比较,并因此,如果您将密码存储为纯文本,您将无法成功加载用户。解决此问题的一种方法是在 resources.groovy 中使用以下配置。

passwordEncoder(PlaintextPasswordEncoder)

但是,从安全的角度来看,我当然不会提倡将其作为长期解决方案。

于 2013-09-23T14:26:48.733 回答