Не могу войти в систему в форме авторизации в laravel - PullRequest
0 голосов
/ 16 мая 2019

Я новичок в laravel и кодировании. Здесь я делаю эту простую форму регистрации и формы регистрации, что регистрирует пользователей и сохраняет их в базе данных, но когда я использую ту же информацию, которая хранится в базе данных, для входа пользователя при использовании формы входа он перенаправляет меня обратно в саму форму, это должно происходить только в том случае, если адрес электронной почты и пароль не соответствуют базе данных, но они соответствуют базе данных, и перенаправление меня обратно в форму должно перенаправить меня на панель инструментов ... Любая помощь Буду признателен Спасибо ...

UserController.php

<?php

namespace App\Http\Controllers;


use App\Http\Requests;
use App\User;
use App\UserTypes;

use Auth;
use Hashids;
use Redirect;
use Illuminate\Http\Request;
use Hash;


class UserController extends Controller
{  

    public function getDashboard()
    {
        return view('dashboard');
    }


    //Storing the user information into the database
    public function postSignUp(Request $request)
    {
        $email = $request['email'];
        $first_name = $request['first_name'];
        $password = $request['password'];

        $user = new User();
        $user->email = $email;
        $user->first_name = $first_name;
        $user->password = $password;
        $user->save();

        //redirecting back 

        return redirect()->route('dashboard');

    }

    //Logging users in

    Public function postLogIn(Request $request)
    {
        if (Auth::attempt(['email'=>$request->email, 'password'=>$request->password]))
        {
            return redirect()->route('dashboard');
        }

            return redirect()->back();
    }

}

Маршруты

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('signup');
});


Route::post('/signup',[
    'uses' => 'UserController@postSignUp',
    'as' => 'signup'


]);

Route::get('/dashboard',[
    'uses' => 'UserController@getDashboard',
    'as' =>'dashboard'
]);

Route::post('/login',[
    'uses' => 'UserController@postLogIn',
    'as' => 'login'

]);

Моя HTML-форма

@extends("layouts.master")

@section("content")

<div class="row">
    <div class="col-md-6">
    <h3>Sign Up here!</h3>
    <form method="post" action="{{route('signup')}}">
        <div class="form-group">
<label for="email">Your email</label>
<input class="form-control" type="text" name="email" id="email">
</div>

<div class="form-group">
<label for="first_name">First Name</label>
<input class="form-control" type="text" name="first_name" id="first_name">
</div>

<div class="form-group">
<label for="password">Password</label>
<input class="form-control"  type="password" name="password" id="password">
</div>

<button type="sumbit" class="btn btn-primary">sumbit</button>
<input type="hidden" name="_token" value="{{ Session::token()}}">

    </form>
    </div>
</div>
<br>



<div class="row">
    <div class="col-md-6">
    <h3>Login here!</h3>
    <form method="post" action="{{route('login')}}">
        <div class="form-group">
<label for="email">Your email</label>
<input class="form-control" type="text" name="email" id="email">
</div>

<div class="form-group">
<label for="password">Password</label>
<input class="form-control"  type="password" name="password" id="password">
</div>

<button type="sumbit" class="btn btn-primary">Login</button>
<input type="hidden" name="_token" value="{{ Session::token()}}">

    </form>
    </div>
</div>


@endsection

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

Вы сохраняете пароль в виде обычного текста, который не очень подходит laravel 5.7 и далее использует HAsH для хранения пароля Вы можете использовать следующий код:

use Illuminate\Support\Facades\Hash;
$user->password = Hash::make($password);

Вам также не хватает csrf в обеих ваших формах взгляните на это

@extends("layouts.master")

@section("content")

<div class="row">
    <div class="col-md-6">
    <h3>Sign Up here!</h3>
    <form method="post" action="{{route('signup')}}">
       @csrf
        <div class="form-group">
<label for="email">Your email</label>
<input class="form-control" type="text" name="email" id="email">
</div>

<div class="form-group">
<label for="first_name">First Name</label>
<input class="form-control" type="text" name="first_name" id="first_name">
</div>

<div class="form-group">
<label for="password">Password</label>
<input class="form-control"  type="password" name="password" id="password">
</div>

<button type="sumbit" class="btn btn-primary">sumbit</button>
<input type="hidden" name="_token" value="{{ Session::token()}}">

    </form>
    </div>
</div>
<br>



<div class="row">
    <div class="col-md-6">
    <h3>Login here!</h3>
    <form method="post" action="{{route('login')}}">
        @csrf
        <div class="form-group">
<label for="email">Your email</label>
<input class="form-control" type="text" name="email" id="email">
</div>

<div class="form-group">
<label for="password">Password</label>
<input class="form-control"  type="password" name="password" id="password">
</div>

<button type="sumbit" class="btn btn-primary">Login</button>
<input type="hidden" name="_token" value="{{ Session::token()}}">

    </form>
    </div>
</div>
0 голосов
/ 16 мая 2019

Это потому, что вы храните пароль в виде простого текста. Вы должны изменить эту строку

$user->password = $password;

к этому

$user->password = bcrypt($password);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...