php zend_auth

1.数据库表认证

// 创建一个 in-memory SQLite 数据库连接
$dbAdapter = new Zend_Db_Adapter_Pdo_Sqlite(array('dbname' => 
                                                  ':memory:'));

// 构造一个简单表的创建语句
$sqlCreate = 'CREATE TABLE [users] ('
           . '[id] INTEGER  NOT NULL PRIMARY KEY, '
           . '[username] VARCHAR(50) UNIQUE NOT NULL, '
           . '[password] VARCHAR(32) NULL, '
           . '[real_name] VARCHAR(150) NULL)';

// 创建认证证书表
$dbAdapter->query($sqlCreate);

// 构造用来插入一行可以成功认证的数据的语句
$sqlInsert = "INSERT INTO users (username, password, real_name) "
           . "VALUES ('my_username', 'my_password', 'My Real Name')";

// 插入数据
$dbAdapter->query($sqlInsert);

// 用构造器参数来配置实例...
$authAdapter = new Zend_Auth_Adapter_DbTable(
    $dbAdapter,
    'users',
    'username',
    'password'
);

// 用构造器参数来配置实例...
$authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);

$authAdapter
    ->setTableName('users')
    ->setIdentityColumn('username')
    ->setCredentialColumn('password')
;

// 设置输入的证书的值(例如,从登陆的表单)
$authAdapter
    ->setIdentity('my_username')
    ->setCredential('my_password')
;

// 执行认证查询,并保存结果
$result = $authAdapter->authenticate();

// 输出身份
echo $result->getIdentity() . "\n\n";

// 输出结果行
print_r($authAdapter->getResultRowObject());

/* Output:
my_username

Array
(
    [id] => 1
    [username] => my_username
    [password] => my_password
    [real_name] => My Real Name
)
*/

如上的是直接构建一个数据库和表。显然这样不现实,我们一般是把用户信息存储到Oracle,DB2,MySQL这样的数据库。
那我们就不需要像以上的自己构建数据库和表,直接用以下的代码:
$dbAdapter = Zend_DB_TABLE::getDefaultAdapter();

2.摘要式认证

这个认证网上普遍都是copy的Zend文档里面的。
<?php
require_once 'Zend/Auth/Adapter/Digest.php';                        //加载Zend_Auth基本接口
header("Content-Type:text/html;charset=utf-8");
$filename="what.txt";                                       //定义文件名
$realm1="realm";                                            //定义领域1
$username1="user";                                          //定义用户名1
$password1="somePassword";                                     //定义密码1
/*创建一个摘要式认证对象*/

$auth1=new Zend_Auth_Adapter_Digest("what.txt",$realm1,$username1,$password1);
$result1=$auth1->authenticate();                               //返回一个Zend_Auth_Result

var_dump($result1);
if($result1->isValid())                                          //判断结果
{
    echo "成功通过认证!";                                 //如果成功输出内容
}
else                                                        //如果失败输出内容
{
    echo "无法通过认证!";
    echo "<p>";
    echo "失败原因为:<p>";
    print_r($result1->getMessages());                            //输出失败原因
}
?>

以上这个代码是没什么问题,问题就是这个what.txt怎么写。
我的是:
user1:realm1:qq
user:realm:20b5f2fcaa9779a568a81600226ae10e
我把它放在public目录下

1.我试了一下,不能有空行,不然会认证失败。
2.再一个就是这每一行要怎么写。关键是第二个冒号后面的,是password MD5加密还是所有的Md5加密。我看了框架底层的了解
md5("$this->_username:$this->_realm:$this->_password"),所以那一串就是MD5("yourUserName:yourRealm:yourPassword")
然后认证就会成功。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值