17.6.2 使用mod_auth_mysql
在成功地安装该模块之后,使用它与使用mod_auth一样简单。程序清单17-9显示了一个示例的.htaccess文件,该文件用加密密码验证用户身份,加密密码存储在本章前面所创建的数据库中。
程序清单17-9 .htaccess——该.htaccess文件使用MySQL数据库来验证用户身份
ErrorDocument 401/chapter17/rejection.html
AuthName"Realm Name"
AuthType Basic
Auth_MySQL_DB auth
Auth_MySQL_Encryption_Types MySQL
Auth_MySQL_Password_Table authorized_users
Auth_MySQL_Username_Field name
Auth_MySQL_Password_Field password
require valid-user
可以看到,程序清单17-9与程序清单17-7的大部分代码都是相同的。我们仍然需要指定一个出错文档来显示发生401错误(此时身份验证失败)时的警告内容。我们还指定了基本身份验证和给出区域名。与程序清单17-7一样,我们将允许任何有效的、通过身份验证的用户进行访问。
因为我们使用的是mod_auth_mysql而且并不希望使用所有默认设置,所以还可以指定一些其他指令,这些指令可以指定mod_auth_mysql如何工作。Auth_MySQL_DB、Auth_MySQL_Password_Table、Auth_MySQL_Username_Field、Auth_MySQL_Password_Field分别用来指定数据库名称、表名称、用户名字段和密码字段。
我们包含了Auth_MySQL_Encryption_Types指令来指定要使用MySQL密码加密。该指令可接受的值包括Plaintext、Crypt_DES或MySQL。而Crypt_DES是其默认值,它使用标准的UNIX DES加密密码。
从用户观点来看,mod_auth_mysql示例的工作方式与mod_auth示例完全一样。当用户访问该网站时,都看到一个由用户浏览器给出的对话框。如果用户成功通过身份验证,浏览器将显示网页内容。如果验证失败,浏览器将显示一个出错页面。
对于许多网站来说,mod_auth_mysql是理想的。它速度快,使用相对简单,而且允许使用任何方便的机制添加新用户数据库条目。如果要求更大的灵活性以及更精确地控制网页各个部分,可能要使用PHP和MySQL来实现身份验证。