Сеанс Laravel 5.6 не перенаправляется для просмотра

Я использую Laravel 5.6 и сталкиваюсь с некоторыми проблемами. Я хочу аутентифицировать пользователя, если email и password, найденные в базе данных, совпадают, а затем перенаправляют. Если пользователь существует, перенаправить на "user1", в противном случае перенаправить на "/": также прикрепил файл миграции

Маршруты

Route::any('/user1','UserProfile@store');
Route::get('/login','StudentController@index');

Контроллер

public function store(Request $request)
{
    $info = array(
        "Email" => $request->get("email"),
        "password" => $request->get("password")
    );

    $info = DB::table("students")->where($info)->first();

    if(!$info){
        $data = array(
            "user_email" => $info->Email,
            "user_password" => $info->password,
            "user_id" => $info->Student_id
        );

        $request->session()->put($data);
        $request->session()->get('user_email');

        //echo $val=$request->session()->get('user_id');die;
        //  print_r($data);die;

        return redirect('/user1');
    } else {
        return redirect('/');
    }
}

Миграции

   public function up()
{
    Schema::create('students', function (Blueprint $table) {

        $table->string('Name');
        $table->string('Student_id');
        $table->string('Email');
        $table->string('Department');
        $table->string('Gender');
        $table->string('password');

        $table->timestamps();
    });
}

Это изображение студентов таблицы базы данных


person Ahsan Ashraf    schedule 04.09.2018    source источник
comment
Ваш вопрос содержит опечатки, отредактируйте его, чтобы исправить, пожалуйста.   -  person Baptiste Mille-Mathias    schedule 04.09.2018
comment
Я замечу это сейчас, но хранить пароли в виде простого текста в базе данных — очень плохая идея. Попытка создать свою собственную систему аутентификации, когда она есть у Laravel, также кажется отсталой; используйте то, что доступно, чтобы избежать проблем с безопасностью, или установите пакет, например Sentinel (cartalyst.com/manual/sentinel/2.0) для аутентификации.   -  person Tim Lewis    schedule 05.09.2018


Ответы (1)


if(!$info) — обратная логика; вы пытаетесь создать $data из null (->first() вернет объект stdClass или null, в зависимости от того, что он найдет, и этот код будет выполняться только в том случае, если $info равен null).

Так должно быть

if($info){
    $data = array(
        "user_email" => $info->Email,
        "user_password" => $info->password,
        "user_id" => $info->Student_id
    );

    $request->session()->put($data);
    $request->session()->get('user_email');

    return redirect('/user1');
} else {
    return redirect('/');
}
person Tim Lewis    schedule 04.09.2018
comment
Спасибо за ответ, я также использую эту логику If($info), но вы всегда перенаправляете на '/', но я беспокоюсь, если я введу emil и пароль, которые должны перейти на страницу '/usee1' - person Ahsan Ashraf; 05.09.2018
comment
Это просто означает, что ваш запрос возвращает null; вы вводите правильный адрес электронной почты и пароль? Пароль хеширован? Должно быть email, а не Email? Есть много причин для null результатов запроса. - person Tim Lewis; 05.09.2018
comment
я использую dd($data), чтобы показать информацию, доступную в базе данных - person Ahsan Ashraf; 05.09.2018
comment
public function up() { Schema::create('students', function (Blueprint $table) { $table-›string('Name'); $table-›string('Student_id'); $table-›string( 'Электронная почта'); $table-›string('Отдел'); $table-›string('Пол'); $table-›string('пароль'); $table-›timestamps(); }); } - person Ahsan Ashraf; 05.09.2018
comment
извините, я впервые использую эту платформу - person Ahsan Ashraf; 05.09.2018
comment
Это отлично. Таким образом, проблема не в email и Email, а в вашей базе данных есть данные. Поставьте dd("Got here"); над return redirect("/user1");, отправьте форму с реальными данными и посмотрите, доберетесь ли вы туда. - person Tim Lewis; 05.09.2018
comment
когда я ввожу dd($data) выше, перенаправляю пользователя1, тогда он показывает значения emil и password - person Ahsan Ashraf; 05.09.2018
comment
но когда я комментирую dd($data), он снова перенаправляется на / - person Ahsan Ashraf; 05.09.2018
comment
Затем, если на вашем маршруте /user1 нет дополнительной логики перенаправления, вы должны быть перенаправлены на /user1 без проблем. - person Tim Lewis; 05.09.2018
comment
как? сделай это я запутался для этого - person Ahsan Ashraf; 05.09.2018
comment
Я не знаю, и я не знаю, как я буду отлаживать это дальше... Из всего, что вы разместили в своем вопросе, вы не должны быть перенаправлены на /, если вы введете действительный адрес электронной почты/пароль . - person Tim Lewis; 05.09.2018
comment
Извините, я не могу сделать больше; обновите свой вопрос с помощью обновленного кода; возможно, кто-то еще увидит то, что я пропустил. - person Tim Lewis; 05.09.2018
comment
можете ли вы предложить предварительную базу темы на laravel - person Ahsan Ashraf; 05.09.2018
comment
Как учебник? — Боюсь, нет. Я работаю с Laravel с версии 4.2 и учился на работе у коллеги, поэтому мои знания по учебникам довольно низкие. - person Tim Lewis; 05.09.2018