模块

abstract Auth

用户授权库。处理用户登录与退出,还有密码加密。

package
BootPHP/授权
author
Tinsh
copyright
© 2005-2016 Kilofox Studio

该类在 MODPATH/auth/classes/auth.php 第 12 行声明。

属性

protected $_config

protected static $_instance

NULL

protected $_session

方法

public __construct( ) (在 Auth 中定义)

加载 Session 和配置选项

返回值

  • void

源代码

public function __construct($config = array())
{
	// 保存对象中的配置信息
	$this->_config = $config;
	$this->_session = Session::instance($this->_config['session_type']);
}

abstract public check_password( ) (在 Auth 中定义)

源代码

abstract public function check_password($password);

public get_user( ) (在 Auth 中定义)

从 session 中取得当前登录用户 如果当前没有用户登录,则返回 NULL

返回值

  • mixed

源代码

public function get_user($default = NULL)
{
	return $this->_session->get($this->_config['session_key'], $default);
}

public hash( string $str ) (在 Auth 中定义)

Perform a hmac hash, using the configured method.

参数

  • string $str required - String to hash

返回值

  • string

源代码

public function hash($str)
{
	if (!$this->_config['hash_key'])
		throw new BootPHP_Exception('必须在您的授权配置中设置一个有效的 hash 键。');
	return hash_hmac($this->_config['hash_method'], $str, $this->_config['hash_key']);
}

public static instance( ) (在 Auth 中定义)

单例模式

返回值

  • Auth

源代码

public static function instance()
{
	if (!isset(self::$_instance))
	{
		// 为该类型加载配置信息
		$config = BootPHP::$config->load('auth');
		if (!$type = $config->get('driver'))
			$type = 'db';
		// 设置 session 类名
		$class = 'Auth_' . ucfirst($type);
		// 创建一个新的 session 实例
		self::$_instance = new $class($config);
	}
	return self::$_instance;
}

public logged_in( ) (在 Auth 中定义)

检查是否存在一个激活的 session。

返回值

  • mixed

源代码

public function logged_in()
{
	return $this->get_user() !== NULL;
}

public login( string $username , string $password [, boolean $remember = bool false ] ) (在 Auth 中定义)

尝试登录

参数

  • string $username required - 要登录的用户名
  • string $password required - 要校验的密码
  • boolean $remember = bool false - 开启自动登录

返回值

  • boolean

源代码

public function login($username, $password, $remember = false)
{
	if (empty($password))
		return false;
	return $this->_login($username, $password, $remember);
}

public logout( [ boolean $destroy = bool false ] ) (在 Auth 中定义)

移除相关 session 变量,使用户退出

参数

  • boolean $destroy = bool false - 彻底销毁 session

返回值

  • boolean

源代码

public function logout($destroy = false)
{
	if ($destroy === true)
	{
		// 彻底销毁 session
		$this->_session->destroy();
	}
	else
	{
		// 从 session 中移除用户
		$this->_session->delete($this->_config['session_key']);
		// 重新生成 session_id
		$this->_session->regenerate();
	}
	// 双重验证
	return !$this->logged_in();
}

abstract public password( ) (在 Auth 中定义)

源代码

abstract public function password($username);

abstract protected _login( ) (在 Auth 中定义)

源代码

abstract protected function _login($username, $password, $remember);

protected complete_login( object $user ) (在 Auth 中定义)

完成登录

参数

  • object $user required - 用户

返回值

  • boolean

源代码

protected function complete_login($user)
{
	// 重新生成 session_id
	$this->_session->regenerate();
	// 将用户名存入 session
	$this->_session->set($this->_config['session_key'], $user);
	return true;
}