Проверить, вошел ли пользователь в laravel 5.7

Я делаю тест, но он терпит неудачу, когда пытается проверить, вошел ли пользователь в систему:

<?php

namespace Tests\Feature;

use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Auth;
use App\User;

class RegisterTest extends TestCase
{

    use RefreshDatabase;

    /*.....
    more test about registering
     ....*/    

    /** @test */
    function redirect_to_home_page_and_logged_in_after_login()
    {                   

        $user = factory(User::class)->create([
            'name' => 'Test',
            'email' => '[email protected]', 
            'password' => '123456'
        ]);     

        $response = $this->post('login', [
            'email' => '[email protected]',
            'password' => '123456'          
        ]);

        //this works
        $response->assertRedirect('/');

        //this fails 
        $this->assertTrue(Auth::check());


    }
}

А это мой контроллер HomeController:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class HomeController extends Controller
{


    public function index()
    {                    

        if (Auth::check()){

            return view('home');    
        }

        return view('welcome');

    }
}

А это мои маршруты / web.php

Route::get('/', 'HomeController@index');    
Auth::routes();

Я не уверен, что делаю не так. Что я могу сделать?. Я использую laravel 5.7 и phpunit 5.7.1 Также в моем приложении / Htpp / Auth / LoginController.php я сделал это:

protected $redirectTo = '/'; 

Спасибо.

Я сделаю безумное предположение и скажу, что вы на самом деле никогда не входили в систему, потому что вы не установили свой пароль на заводе. Однако я не совсем уверен. Можете ли вы попробовать?

Mozammil 04.01.2019 19:17

Я забыл о функции bcrypt (). Спасибо.

Luis 06.01.2019 21:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
4
2
5 475
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Создание пользователя требует, чтобы вы позаботились о хешировании пароля. Вы можете просто сделать это с помощью функции php password_hash. И используйте Auth::login($user); для входа в систему.

Вот так:

$user = User::create(['email' => '[email protected]', 'password' => password_hash('123456', 1)]);
Auth::login($user); //You should be logged in :)

Это не решение того, о чем спрашивал автор ... правильное решение было дано Майком Харрисоном ...

matiaslauriti 05.05.2020 11:08

В дополнение к хешированию вашего пароля вы также можете просто опубликовать его на маршруте регистрации и создать новую учетную запись.

/** @test */
function redirect_to_home_page_and_logged_in_after_register()
{                      
    $response = $this->post('register', [
        'name' => 'Test',
        'email' => '[email protected]',
        'password' => '123456'          
    ]);

    //this works
    $response->assertRedirect('/');

    //this fails 
    $this->assertTrue(Auth::check());
}

Я предполагаю, что вам также может потребоваться сделать это обоими способами:

/** @test */
function redirect_to_home_page_and_logged_in_after_login()
{                

    $user = factory(User::class)->create([
        'name' => 'Test',
        'email' => '[email protected]', 
        // note you need to use the bcrypt function here to hash your password
        'password' => bcrypt('123456')
    ]);      

    $response = $this->post('login', [
        'name' => 'Test',
        'email' => '[email protected]',
        'password' => '123456'          
    ]);

    //this works
    $response->assertRedirect('/');

    //this fails 
    $this->assertTrue(Auth::check());
}

Другие вопросы по теме