AUTH的实现是用抽象类来实现的,一个类,对应多种不同的验证方式。
先来介绍一个抽象类,很有借鉴意义:
实现一个猴子类,狗类,以及后面可其他类。 通常可以用抽象类和接口实现:
但是我们不直接定义具体的类,我们把所有猴子类,狗类的特征放在不同的config里面,同过抽象类方法来 初始话一个对象。
config.php
1 <?php 2 return array( 3 'driver'=>'monkey',//调用那个类。 4 'index'=>'Ani',//其他。 5 );
animal.php
1 <?php 2 abstract class Animal{ 3 protected static $_instance; 4 5 public static function instance($config){ 6 7 $driver=$config['driver']; 8 $ind=$config['index']; 9 require "animal/$driver.php"; 10 11 $class=$ind."_".$driver; 12 self::$_instance=new $class($config); 13 return self::$_instance; 14 } 15 16 } 17 18 $config=require 'animal/config/config.php'; 19 $dog=Animal::instance($config); 20 echo $dog->getname();
dog.php
1 <?php 2 // require '../animal.php'; 3 class Ani_dog extends Animal{ 4 5 function getname(){ 6 return "dog"; 7 } 8 9 }
monkey.php
1 <?php 2 // require '../animal.php'; 3 class Ani_monkey extends Animal{ 4 5 function getname(){ 6 return "monkey"; 7 } 8 9 }
Auth也是通过这样的方式来调整认证方式,他有一个自定义 driver为 File的类。
用着个模块第一步,配置好正确的config。
调用抽象类的来初始化一个对象;
进行认证。
如:
1 $auth = Auth::instance(); 2 if ($auth->login('admin', 'good_pass', true)) { 3 echo 'hello, ' . $auth->get_user(); 4 } else { 5 echo 'login failed!'; 6 } 7 $auth->logout();
AUTH实现的有:
密码加密:
利用hash_hmac函数进行hash加密存储。
session记录登录,可定义自动保留时长。到时间未操作自动推出。