PHP code example of lzpeng / think-auth

1. Go to this page and download the library: Download lzpeng/think-auth library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

lzpeng / think-auth example snippets


return [
    'default' => 'test1',                                   // 默认使用的认证器标识

    'test1' => [                                        // 认证器标识
        'driver' => 'session',                          // 认证器驱动; 内置支持session和simpleToken
        'sessionKey' => 'UserIdentity',                 // 会话key
        'provider' => [                                 // 认证所使用的用户提供器
            'driver' => 'model',                        // 用户提供器驱动; 内置支持model和database
            'modelClass' => 'app\common\model\User',    // 模型类; 需要实现Lzpeng\Auth\Contracts\UserIdentity接口
            'idKey' => 'id',                            // 模型对应的用户标识属性名称; 可选; 默认为'id'
            'passwordKey' => 'password',                // 用户凭证数组里的密码key; 可选; 默认为'password'
            'forceValidatePassword' => true,            // 是否强制验证密码; 如果是ture但没传入密码凭证,凭证就验证失败; false的话不传密码凭证就忽略密码凭证的验证; 可选; 默认为true
            'hasher' => [
                'driver' => 'bcrypt',                    // 密码hasher; 内置只支持bcrypt

                // 'driver' => '\test\HMacHasher'        // 只支持自定义driver; 需实现Lzpeng\Auth\Contracts\Hasher接口
                // 'algo' => 'md5',
                // 'salt' => 'xxxxxx',
            ]
        ],

        // 以下是simpleToken认证器配置例子
        // 'driver' => 'simpleToken',
        // 'tokenKey' => 'User-Token',             // token名称
        // 'cache' => [                            // 缓存配置; 支持thinkphp的缓存配置 可选; 不设置使用框架的cache配置;
        //     'type'   => 'File',
        //     'path'   => '',
        //     'prefix' => '',
        //     'expire' => 1200,
        // ],

        // 以下的database用户提供器配置例子
        // 'provider' => [
        //     'driver' => 'database',
        //     'table' => 'user',
        //     'passwordKey' => 'password',                // 用户凭证数组里的密码key; 可选; 默认为'password'
        //     'forceValidatePassword' => true,            // 是否强制验证密码; 如果是ture但没传入密码凭证,凭证就验证失败; false的话不传密码凭证就忽略密码凭证的验证; 可选; 默认为true
        //     'hasher' => [
        //         'driver' => 'bcrypt',                    // 密码hasher; 内置只支持bcrypt
        //     ]
        // ]

        'behaviors' => [                                    // 认证过程中的行为绑定; 实现了AuthBehavior接口
            'login_before' => [
                'app\behaivor\checkAttempt',
            ],
            'login_success' => [],
            'login_failure' => [],
            'logout_before' => [],
            'logout_after' => [],
        ]

    ],

    'test2' => [
        ...
    ],
]

use Lzpeng\Auth\Auth;
use Lzpeng\Auth\Exceptions\AuthenticationException;

try {
    $result = Auth::login(['username' => 'test', 'password' => 'password']);
    // session认证器,$result返回为null
    // simpleToken认证器,$result返回为token, 用于返回给客户端

    // 认证成功处理逻辑
} catch (AuthenticationException $ex) {
    // 异常处理
}

try {
    $user = fromOtherSystem($id);
    $result = Auth::setUser($user);
    // 认证成功处理逻辑
} catch (AuthenticationException $ex) {
    // 异常处理
}

if (Auth::isLogined()) {
    // 用户已认证登录
}

$id = Auth::getId();     // 如果未认证登录将返回null

$user = Auth::getUser();    // 如果未认证登录将返回null

Auth::logout(); 

Auth::make('test1')->login(['username' => 'xxx', 'password' = 'xxx']);
Auth::make('test2')->login(['admin' => 'xxx', 'password' => 'xxxx]);

$user = Auth::make('test1')->getUser();
$admin = Auth::make('test2')->getUser();