Laravel的访客用户库

维护者

详细信息

github.com/jrseliga/pseudo

来源

v1.0.0-rc.1 2017-07-29 23:03 UTC

This package is auto-updated.

Last update: 2024-09-22 22:34:23 UTC


README

Laravel的访客用户库

描述

pseudo 为 Laravel 的身份验证功能添加了访客权限的能力。

安装

通过 composer 包管理器安装

composer require agilesdesign/pseudo

添加到提供者列表
'providers' => [
    Pseudo\Providers\PseudoServiceProvider::class,
];

概述

与默认 Laravel 行为的比较

Auth::check() // true if User false if Pseudo/Contracts/GuestContract 
Auth::user() // returns instance of Pseudo/Contracts/GuestContract instead of null if no user found
@can() // no longer automatically fails if not authenticated, allows Gate to be checked

配置

更新守卫驱动程序

config/auth.php

'guards' => [
    // To use with web guard
    'web' => [
        'driver' => 'pseudo',
        'provider' => 'users',
    ],
    
    // To use with api guard
    'api' => [
        'driver' => 'pseudo-token',
        'provider' => 'users',
    ],
],

注册服务提供者

手动注册服务提供者仅适用于 Laravel 应用程序版本 5.4.* 或更低版本。 config/app.php

'providers' => [
    /*
     * Package Service Providers...
     */
    \Pseudo\Providers\PseudoServiceProvider::class,
],

使用方法

当请求 Pseudo/Contracts/GuestContract 时,从 Laravel 的服务容器中解析出 Pseudo\Auth\Guest 的实例。

此绑定在提供的服务提供者中注册

public function register()
{
    $this->app->bind(GuestContract::class, Guest::class);
}

您可以通过提供自己的实现 Pseudo/Contracts/GuestContractGuestUser 类并重新绑定接口来覆盖此绑定

class GuestUser extends User implements GuestContract
{
    //You can override any attribute by using Eloquent Accessors
    public function getNameAttribute(){
        return 'Guest User';
    }
}
this->app->bind(\Pseudo\Contracts\GuestContract::class, \App\GuestUser::class);

由于 Pseudo\Auth\Guest 继承了它,因此仍然可以对 Laravel 的 App\User 进行策略检查的类型提示。

示例
Gate::define('create-article', function ($user, $article) {
    if($user instanceof Pseudo\Auth\Guest)
    {
      // logic for guest
    }
    else
    {
      // logic for authenticated
    }
});