mggflow/lv-msvc-auth

v2.0.1 2023-03-17 10:57 UTC

This package is auto-updated.

Last update: 2024-09-17 14:28:06 UTC


README

关于

此包用于在 Laravel 微服务中应用 AuthBase 组件以进行请求认证。

使用方法

要安装

composer require mggflow/lv-msvc-auth

不要忘记将数据库设置添加到 config/database.php

/**
 * Auth database settings
 */
'auth' => [
    'driver' => 'mysql',
    'url' => env('LV_MSVC_AUTH_DATABASE_URL', null),
    'host' => env('LV_MSVC_AUTH_DB_HOST', '127.0.0.1'),
    'port' => env('LV_MSVC_AUTH_DB_PORT', '3306'),
    'database' => env('LV_MSVC_AUTH_DB_DATABASE', 'auth'),
    'username' => env('LV_MSVC_AUTH_DB_USERNAME', 'root'),
    'password' => env('LV_MSVC_AUTH_DB_PASSWORD', ''),
    'unix_socket' => env('LV_MSVC_AUTH_DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'prefix_indexes' => true,
    'strict' => true,
    'engine' => null,
    'options' => extension_loaded('pdo_mysql') ? array_filter([
        PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
    ]) : [],
],

并将认证设置添加到 config/msvc.php

'auth' => [
    'connection_name' => env('LV_MSVC_AUTH_CONNECTION_NAME', 'auth'),
    'users_table' => env('LV_MSVC_AUTH_USERS_TABLE', 'users'),
    'cookie_key' => env('LV_MSVC_AUTH_COOKIE_KEY', 'au'),
    'token_header_name' => env('LV_MSVC_AUTH_TOKEN_HEADER_NAME', 'Auth-Access-Token'),
]

环境

LV_MSVC_AUTH_TOKEN_HEADER_NAME=Auth-Access-Token
LV_MSVC_AUTH_CONNECTION_NAME=auth
LV_MSVC_AUTH_USERS_TABLE=users
LV_MSVC_AUTH_COOKIE_KEY=au

LV_MSVC_AUTH_DATABASE_URL=
LV_MSVC_AUTH_DB_HOST=127.0.0.1
LV_MSVC_AUTH_DB_PORT=3306
LV_MSVC_AUTH_DB_SOCKET=
LV_MSVC_AUTH_DB_DATABASE=auth
LV_MSVC_AUTH_DB_USERNAME=root
LV_MSVC_AUTH_DB_PASSWORD=

认证外观使用示例

$password = $request->input('password', false);
$username = $request->input('username', false);
$email = $request->input('email', false);
$token = $request->header($this->authHeaderName, $request->input('token', false));
        
$this->authenticateFacade = new Authenticate();
$authenticateFacade->auth($password, $username, $email, $token);

// object|null
$currentUser = $authenticateFacade->getCurrentUser();

AuthRequest 案例使用示例

$requestAuthentication = new AuthRequest();
$currentUser = $requestAuthentication->auth($request)->getCurrentUser();

AuthenticateRequestUser 属性使用示例

class AuthenticateRequestUserUsage
{
    use AuthenticateRequestUser;
    
    public someFunction($request){
        $this->authRequestUser($request);
        
        if(!$this->userIsAuthenticated()){
            throw new AccessDenied();
        }
        
        $user = $this->currentUser;
    }
}