我的cakephp应用程序中有一个经典的登录页面,用户输入他的登录名和密码。 对于身份验证,我已经创建了一个自定义登录功能。
我想制作第二个身份验证功能,因为我希望我的用户在点击其他应用程序中的链接时能够连接到应用程序。第二个应用程序将发送用户名(无密码)。我会检查他是否有权登录并自动在申请的主页上登录。
我考虑在特定页面上创建href链接,该链接将完成此登录并将用户重定向到主页。
我希望一切都清楚。你能帮我一下,告诉我你是怎么做到的。 现有的登录功能如下所示:
//AppController.php
function beforeFilter(){
$this->Auth->authenticate = array('Ldap');
$this->Auth->authorize = array('Controller');
}
public function isAuthorized(){
$user = $this->Auth->user();
if($user) {
return true;
}
return false;
}
//Controller/Component/Auth/LdapAuthenticate.php
App::uses('BaseAuthenticate', 'Controller/Component/Auth');
class LdapAuthenticate extends BaseAuthenticate {
public function authenticate(CakeRequest $request, CakeResponse $response) {
$username=$request->data["Users"]["username"];
$pwd=$request->data["Users"]["password"];
$ldap = ldap_connect("***************");
ldap_set_option ($ldap, LDAP_OPT_REFERRALS, 0);
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
$bind = @ldap_bind($ldap, "WORLD\\".$username, $pwd);
if ($bind && $pwd!="") {
$ldap_dn ="DC=world";
$filter = "(&(objectClass=user)(samaccountname=".$username.")(cn=*))";
$justthese = array("cn","mail","givenname","distinguishedname","memberof");
$sr=ldap_search($ldap, $ldap_dn, $filter,$justthese);
$info = ldap_get_entries($ldap, $sr);
ldap_close($ldap);
return $info;
} else {
ldap_close($ldap);
return false;
}
}
}