Browse Source

ZF-7514
- Add support for Windows authentication

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@17465 44c647ce-9c0f-0410-b52a-842ac1e357ba

juokaz 16 năm trước cách đây
mục cha
commit
a72e384978
1 tập tin đã thay đổi với 44 bổ sung4 xóa
  1. 44 4
      library/Zend/Db/Adapter/Sqlsrv.php

+ 44 - 4
library/Zend/Db/Adapter/Sqlsrv.php

@@ -132,10 +132,17 @@ class Zend_Db_Adapter_Sqlsrv extends Zend_Db_Adapter_Abstract
 
         $connectionInfo = array(
             'Database' => $this->_config['dbname'],
-            'UID'      => $this->_config['username'],
-            'PWD'      => $this->_config['password'],
         );
-
+		
+		if (isset($this->_config['username']) && isset($this->_config['password']))
+		{
+			$connectionInfo += array(
+				'UID'      => $this->_config['username'],
+				'PWD'      => $this->_config['password'],
+			);
+		}
+		// else - windows authentication
+			
         if (!empty($this->_config['driver_options'])) {
             foreach ($this->_config['driver_options'] as $option => $value) {
                 // A value may be a constant.
@@ -159,8 +166,41 @@ class Zend_Db_Adapter_Sqlsrv extends Zend_Db_Adapter_Abstract
             require_once 'Zend/Db/Adapter/Sqlsrv/Exception.php';
             throw new Zend_Db_Adapter_Sqlsrv_Exception(sqlsrv_errors());
         }
+    }
+	
+	/**
+     * Check for config options that are mandatory.
+     * Throw exceptions if any are missing.
+     *
+     * @param array $config
+     * @throws Zend_Db_Adapter_Exception
+     */
+	protected function _checkRequiredOptions(array $config)
+    {
+        // we need at least a dbname
+        if (! array_key_exists('dbname', $config)) {
+            /** @see Zend_Db_Adapter_Exception */
+            require_once 'Zend/Db/Adapter/Exception.php';
+            throw new Zend_Db_Adapter_Exception("Configuration array must have a key for 'dbname' that names the database instance");
+        }
 
-        sqlsrv_query($this->_connection, 'SET QUOTED_IDENTIFIER ON');
+        if (! array_key_exists('password', $config) && array_key_exists('username', $config)) {
+            /**
+             * @see Zend_Db_Adapter_Exception
+             */
+            require_once 'Zend/Db/Adapter/Exception.php';
+            throw new Zend_Db_Adapter_Exception("Configuration array must have a key for 'password' for login credentials.
+												If Windows Authentication is desired, both keys 'username' and 'password' should be ommited from config.");
+        }
+
+        if (array_key_exists('password', $config) && !array_key_exists('username', $config)) {
+            /**
+             * @see Zend_Db_Adapter_Exception
+             */
+            require_once 'Zend/Db/Adapter/Exception.php';
+            throw new Zend_Db_Adapter_Exception("Configuration array must have a key for 'username' for login credentials.
+												If Windows Authentication is desired, both keys 'username' and 'password' should be ommited from config.");
+        }
     }
 
     /**