laravel auth () -> попытки () записать любой сеанс - PullRequest
0 голосов
/ 15 апреля 2020

Я только учу Laravel месяцев go. Есть небольшой вопрос, который я хотел бы знать. Я использовал auth () -> попытки (), чтобы успешно выполнить проверку личности. Laravel добавляет какую-либо переменную session () automati c? Если нет, мне нужно добавить переменную сеанса самостоятельно, или мне нужно установить где-нибудь. , большое Вам спасибо! Вот часть моего контроллера

    if (!$check = auth()->attempt([
      'member_username' => request()->$input('username'),
      'password' => request()->$input('pwd'),
      'login_enable' => 1
    ])){
      //processing login successfully

    }

Вот часть сети. php

Route::group(['middleware' => 'auth'], function(){
// Login successfully route
});

Вот часть аутентификации. php

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

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
    ],
    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],
        'account' => [
          'driver' => 'eloquent',
          'model' => App\Entity\AccountMain ::class,        
        ],
    ],

1 Ответ

2 голосов
/ 15 апреля 2020

Когда ваша сторожевая аутентификация session, она использует класс Illuminate\Auth\SessionGuard. Здесь вы можете увидеть его attempt метод:

/**
     * Attempt to authenticate a user using the given credentials.
     *
     * @param  array  $credentials
     * @param  bool  $remember
     * @return bool
     */
    public function attempt(array $credentials = [], $remember = false)
    {
        $this->fireAttemptEvent($credentials, $remember);

        $this->lastAttempted = $user = $this->provider->retrieveByCredentials($credentials);

        // If an implementation of UserInterface was returned, we'll ask the provider
        // to validate the user against the given credentials, and if they are in
        // fact valid we'll log the users into the application and return true.
        if ($this->hasValidCredentials($user, $credentials)) {
            $this->login($user, $remember);

            return true;
        }

        // If the authentication attempt fails we will fire an event so that the user
        // may be notified of any suspicious attempts to access their account from
        // an unrecognized user. A developer may listen to this event as needed.
        $this->fireFailedEvent($user, $credentials);

        return false;
    }

Вы можете видеть, что он вызывает login метод этого охранника

/**
     * Log a user into the application.
     *
     * @param  \Illuminate\Contracts\Auth\Authenticatable  $user
     * @param  bool  $remember
     * @return void
     */
    public function login(AuthenticatableContract $user, $remember = false)
    {
        $this->updateSession($user->getAuthIdentifier());

        // If the user should be permanently "remembered" by the application we will
        // queue a permanent cookie that contains the encrypted copy of the user
        // identifier. We will then decrypt this later to retrieve the users.
        if ($remember) {
            $this->ensureRememberTokenIsSet($user);

            $this->queueRecallerCookie($user);
        }

        // If we have an event dispatcher instance set we will fire an event so that
        // any listeners will hook into the authentication events and run actions
        // based on the login and logout events fired from the guard instances.
        $this->fireLoginEvent($user, $remember);

        $this->setUser($user);
    }

Вызов updateSession - ваш ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...