Как решить проблему сеанса аутентификации? - PullRequest
0 голосов
/ 22 апреля 2020
$customer = Customer::find(6);
        Auth::login($customer);
        if (Auth::check()) {
            return Auth::user()->name;
        }

Это возвращаемое имя пользователя, но сеанс аутентификации не работает, потому что при перенаправлении другой страницы я не могу найти авторизованного пользователя для любого тела, пожалуйста, помогите

Идеально работает для экземпляра пользователя

$user= User::find(6);
        Auth::login($user);
        if (Auth::check()) {
            return Auth::user()->name;
        } 

1 Ответ

0 голосов
/ 22 апреля 2020

Вам необходимо объявить нового пользователя для Клиента в вашем файле config/auth.php:

    /*
    |--------------------------------------------------------------------------
    | User Providers
    |--------------------------------------------------------------------------
    |
    | All authentication drivers have a user provider. This defines how the
    | users are actually retrieved out of your database or other storage
    | mechanisms used by this application to persist your user's data.
    |
    | If you have multiple user tables or models you may configure multiple
    | sources which represent each model / table. These sources may then
    | be assigned to any extra authentication guards you have defined.
    |
    | Supported: "database", "eloquent"
    |
    */

    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],

        'customers' => [
            'driver' => 'eloquent',
            'model' => App\Customer::class,
        ],

        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],
    ],

, а затем определить новую защиту для вашего провайдера пользователя

    /*
    |--------------------------------------------------------------------------
    | Authentication Guards
    |--------------------------------------------------------------------------
    |
    | Next, you may define every authentication guard for your application.
    | Of course, a great default configuration has been defined for you
    | here which uses session storage and the Eloquent user provider.
    |
    | All authentication drivers have a user provider. This defines how the
    | users are actually retrieved out of your database or other storage
    | mechanisms used by this application to persist your user's data.
    |
    | Supported: "session", "token"
    |
    */

    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
            'hash' => false,
        ],

        'web-customer' => [
            'driver' => 'session',
            'provider' => 'customers',
        ],
    ],

, а затем добавить Аутентифицируемая черта модели вашего клиента

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Contracts\Auth\Authenticatable;

class Customer extends Model implements Authenticatable
{
     //...
}

Наконец, вы сможете войти, используя:

        $customer = Customer::find(6);
        Auth::guard('web-customer')->login($customer);
        if (Auth::check()) {
            return Auth::user()->name;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...