强大且极其灵活的认证

v1.3.1 2017-03-30 21:00 UTC

README

强大且极其灵活的认证

Build Status Coverage Status Latest Stable Version Total Downloads License

关键特性

  • 框架无关:

    可以与任何框架以及任何 ORM / 数据库层协同工作。通过实现两个类来集成您选择的方法,Auth 将完成其余工作。
    了解更多关于集成

  • 多个实例:

    没有静态或糟糕的全局作用域。每个认证实例都是完全自包含的,并且可以与完全不同的后端和会话处理器通信。
    了解更多关于多个实例

  • 强大的权限:

    基于包的权限允许您定义广泛的访问控制组,并且重写允许您根据每个用户允许/拒绝权限。
    了解更多关于权限

安装

安装与预期一样简单,只需通过 Composer 需求即可。

{
    "require": {
        "solution10/auth": "^1.2"
    }
}

注意:Auth 完全不提供存储功能(没有数据库层 / 访问)。您需要通过实现 StorageDelegate 来提供此功能。这种做法可能一开始看起来有些奇怪,但它允许您完全控制数据检索的逻辑,同时 Auth 处理实际的机制。 了解更多关于集成

基本用法

您的第一步应该是完成集成指南中的所有内容,但那并不构成一个性感的演示,所以我们假设您已经完成了!

假设我已经完全实现了一个名为 "PDOStorageDelegate" 的 StorageDelegate。

// The storage delegate handles reading/writing User data from
// your data store. That could be a database, REST service, whatever.
$storageDelegate = new PDOStorageDelegate();

// The session delegate handles maintaining state between
// page loads. Essentially, it's a front to the $_SESSION array,
// but if you do it different, you can re-implement!
$sessionDelegate = new Solution10\Auth\Driver\Session();

// Fire up a new instance called "MyAuth"
$auth = new Solution10\Auth\Auth('MyAuth', $sessionDelegate, $storageDelegate);

// Play with some API methods:
if ($auth->loggedIn()) {
    echo 'Hi, '.$auth->user()->username.', welcome to the site!';
}

如您所注意到的,我们为 auth 实例命名。这为我们提供了一个在以后引用它们的方法。更多关于这一点请参阅实例章节。

登录

if ($auth->login($username, $password)) {
    echo 'User was logged in!';
} else {
    echo 'Please check your username and password.';
}

登出

$auth->logout();

检查登录状态

if ($auth->loggedIn())) {
    echo "You're logged in!";
} else {
    echo "You are not logged in :(";
}

获取当前用户

$user = $auth->user();

强制登录

这应该非常小心使用,它将允许您在不输入密码的情况下登录用户。这可能在注册后非常有用。

// The $user object needs to be a class that implements the
// Solution10\Auth\UserRepresentation interface.
// It's a tiny interface, but it just gives us enough info to
// do our work.

$user = new UserRepresentationInstance();

$user->forceLogin($user);

您可以在集成指南中了解更多关于用户表示。

PHP 要求

  • PHP >= 5.4

文档

用户指南:请在此处查看 GitHub 上的Wiki

作者

Alex Gisby:GitHubTwitter

许可证

MIT

贡献

贡献者说明