强大且极具灵活性的身份验证

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: GitHub, Twitter

许可

MIT

贡献

贡献者说明