agilesdesign / pseudo
Laravel的访客用户库
v1.0.0-rc.1
2017-07-29 23:03 UTC
Requires
- php: 7.*
Requires (Dev)
- laravel/laravel: ^5.4
- orchestra/testbench: ~3.0
- phpunit/phpunit: ^6.2
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/GuestContract
的 GuestUser
类并重新绑定接口来覆盖此绑定
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 } });