vectorface / auth
简单的认证框架
v0.3.1
2024-09-05 18:48 UTC
Requires
- php: >=8.0
- psr/log: ^1.0 || ^2.0 || ^3.0
Requires (Dev)
- monolog/monolog: ^2.0
- phpunit/phpunit: ^9.5.10
- squizlabs/php_codesniffer: ^3.0
This package is auto-updated.
Last update: 2024-09-05 18:51:48 UTC
README
这是一个简单的认证框架。它旨在与各种可互换的插件一起使用,这些插件可以执行认证、处理会话,甚至进行授权。这些实现的细节留给其他人来完成。
use Vectorface\Auth\Auth; use Vectorface\Auth\Plugin\SuccessPlugin; $auth = new Auth(); $auth->addPlugin(new SuccessPlugin()); if ($auth->login($_SERVER['PHP_AUTH_USER'] $_SERVER['PHP_AUTH_PW'])) { // Do super-secret ultra-dangerous things... SuccessPlugin allows everyone! }
更有用的事情
要真正使用此框架,您需要实现自己的认证插件。也许可以添加一些其他有用的功能,比如授权。
use Vectorface\Auth\Auth; use Vectorface\Auth\Plugin\BaseAuthPlugin; class MyAuthPlugin extends BaseAuthPlugin { /** * An array of user data. Pretend this is a database. */ private $users = [ 'root' => ['pass' => 'r00t', 'access' => '*'], 'jdoe' => ['pass' => 'jdoe', 'access' => ''] ]; /** * Keep track of the currently logged in user. * * @var string */ private user; /** * Compare credentials against our user "database". */ public function login($username, $password) { if (!isset($this->users[$username])) { return Auth::RESULT_FAILURE; } if ($this->users[$username]['pass'] !== $password) { return Auth::RESULT_FAILURE; } $this->user = $username; return Auth::RESULT_SUCCESS; } /** * A *new* method. This will be exposed via the Auth object. */ public function hasAccess($resource) { if (isset($this->user)) { return $this->users[$this->user]['access'] === '*'; } return false; } } $auth = new Auth(); $auth->addPlugin(new MyAuthPlugin()); if ($auth->login($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'])) { // You're in! if ($auth->hasAccess('some resource')) { // You're *really* in! } }