Grails 使用spring security core连接到预身份验证

Grails 使用spring security core连接到预身份验证,grails,spring-security,Grails,Spring Security,我需要做一些自定义的事情,当用户试图登录时,根据他们的用户名,但这些事情需要发生在认证过程之前。这是我到目前为止得到的 我们的系统允许多个电子邮件地址,客户端希望用户能够使用其中的任何一个进行身份验证。为了实现这一点,我创建了一个自定义UserDetailsService,并让代码适当地查找用户 我需要做的其他事情需要在用户对象上设置一些标志,而spring security并不真正了解或关心这些标志。但是我需要连接到auth进程,检查这些标志,并向用户返回适当的错误消息。为了给出一个更具体的例

我需要做一些自定义的事情,当用户试图登录时,根据他们的用户名,但这些事情需要发生在认证过程之前。这是我到目前为止得到的

我们的系统允许多个电子邮件地址,客户端希望用户能够使用其中的任何一个进行身份验证。为了实现这一点,我创建了一个自定义UserDetailsService,并让代码适当地查找用户

我需要做的其他事情需要在用户对象上设置一些标志,而spring security并不真正了解或关心这些标志。但是我需要连接到auth进程,检查这些标志,并向用户返回适当的错误消息。为了给出一个更具体的例子,我需要知道这是否是用户第一次登录系统。所以我们在用户身上有一个标记来跟踪它。当用户尝试进行身份验证时,我需要读取该值并执行一些操作,包括向用户发送消息和停止身份验证

我在文档中查看了事件侦听器机制,但没有看到如何通过侦听器注入自己的工作流。我需要这样做:

使用有效电子邮件进行身份验证,但第一次->取消身份验证->在登录页面上显示消息

我想如果我能处理好一个场景,我就能找出我需要的其他场景


更新:我现在正在阅读有关过滤器的内容,看看是否遗漏了什么…

最简单的方法是连接到身份验证过程中,即提供您自己的。只有两种方法可以实现。在
authenticate()

要将提供程序配置到框架中,请执行以下操作:

<authentication-manager>
  <authentication-provider ref="myAuthenticationProvider" />
</authentication-manager>


grails spring安全文档中没有这个,我很惊讶。您在spring安全文档中看到了吗?他们有一些示例,可能可以很容易地使用grails pluginDo。你有一个特定的链接,可以节省我在这些示例中摸索的时间吗?Spring文档中介绍的“预认证场景”适用于“在访问应用程序之前,用户已通过某些外部系统的可靠身份验证。“在您的应用程序实际将要对用户进行身份验证的情况下,我同意下面的@ericacm的观点,即自定义身份验证提供程序是一种可行的方法。您可能需要扩展AbstractUserDetailsAuthenticationProvider:已经朝着这个方向前进了。”o) 。谢谢我认为这是正确的方法。一旦我解决了所有问题,我会回答更多细节。我在这里添加了一个后续问题,以防你们都知道答案: