有没有办法使用Active Directory在symfony应用程序中对用户进行身份validation? 你能指出一些文件吗?
编辑
我需要的是在我的应用程序中有一个透明的login。 用户在Windowslogin时validation一次,然后所有应用程序都应该使用相同的凭据进行访问,而不用再次询问域\用户名和密码。
我尝试了一个简单的PHP脚本中的以下内容:
if (!isset($_SERVER['PHP_AUTH_USER'])) { header('WWW-Authenticate: Basic realm="my realm"'); header('HTTP/1.0 401 Unauthorized'); exit; } else { echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>"; echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>"; }
但是然后我popupauthentication表单。 有没有什么办法来传递头文件在Windowslogin使用的凭据?
谢谢,拉杜。
你可以通过编写你自己的可调用的sfDoctrineGuardPlugin
(如果你使用的是Doctrine)来做到这一点。 我会在这里引用插件的自述文件 :
用外部方法检查用户密码
如果您不想将密码存储在数据库中,因为您已经有LDAP服务器,.htaccess文件,或者如果将密码存储在另一个表中,则可以在
app.yml
提供自己的checkPassword
callable(静态方法或函数)app.yml
:all: sf_guard_plugin: check_password_callable: [MyLDAPClass, checkPassword]
当symfony调用
$this->getUser()->checkPassword()
方法时,它会调用你的方法或函数。 你的函数必须有2个参数,第一个是用户名,第二个是密码。 它必须返回true或false。 这是一个这样的功能模板:function checkLDAPPassword($username, $password) { $user = LDAP::getUser($username); if ($user->checkPassword($password)) { return true; } else { return false; } }
你可以试试bhLDAPAuthPlugin吗?