1

我正在为 Symfony2 的自定义身份验证机制而苦苦挣扎。

我想要做什么: 我需要修改基于常规 UsernamePasswordForm 身份验证的行为。唯一需要的修改是,不根据数据库检查凭据,而是检查一些自定义的 unix auth 守护程序。用户本身仍然位于数据库中。

我做了什么:我尝试了一个基于这个Symfony 食谱条目 的完整的自定义身份验证提供程序,并且大多数部分只是扩展不同的 UsernamePassword 类,但它还没有成功。我在服务配置中设置 AuthenticationListener 时遇到了一些问题,因为它UsernamePasswordFormAuthenticationListener有很多必需的参数。目前我不确定它最终是否会成功,因为我们的数据库设置存在一些问题。

我需要什么: 有没有更简单的方法来修改默认登录表单而无需完整的 AuthenticationProvider?恕我直言,在默认行为中进行一些自定义修改是一个很常见的问题。

会对任何想法或提示感到高兴。

4

2 回答 2

0

我自己没有尝试过,但是您应该可以通过设置参数来插入自己的 AuthenticationProvider:

   security.authentication.provider.dao.class:
   ..Security\Core\Authentication\Provider\MyDaoAuthenticationProvider

您的提供者将扩展 Dao 并覆盖 checkAuthentication。

同样,我实际上并没有这样做,而且安全系统非常敏感,所以它可能会也可能不会起作用。

于 2013-03-28T15:09:29.803 回答
0

回答我自己的问题:由于这篇博客文章显示了一个解决方案,我终于设法解决了我的问题。基本思想是扩展默认表单登录身份验证并“窃取”其侦听器。这样您就可以重用大部分现有代码。关键部分是 anAuthenticationProvider和 a的创建和配置SecurityFactory。并且不要错过使用您自己的提供程序密钥而不是form_loginsecurity.yml.

在博客文章中,作者创建了自己的UserProvider,但它也仅使用默认数据库之一。

于 2013-04-05T15:23:54.400 回答