Laravel 5,7 Auth :: check - PullRequest
       0

Laravel 5,7 Auth :: check

2 голосов
/ 28 февраля 2020

Я работаю над системой входа в систему для двух пользователей - администратора и клиента. Для администраторов я использовал стандартные файлы авторизации, но создал новые для клиента. Мой вопрос заключается в том, что auth::check для администраторов работает, но не для клиентов. Таким образом, он не запрашивает базу данных и не регистрирует ни один адрес электронной почты и пароль. Как я могу это исправить?

customerlogin. php

@extends('layouts.app')

@section('title','CustomerLogin')

@push('css')

@endpush

@section('content')
    <div class="content">
        <div class="container-fluid">
            <div class="row">
                <div class="col-md-8 col-md-offset-1">
                    @include('layouts.partial.msg')
                    <div class="card">
                        <div class="card-header" data-background-color="purple">
                            <h4 class="title">Customer Login</h4>
                        </div>
                        <div class="card-content">
                            <form method="POST" action="{{ route('customerLogin') }}">
                                @csrf
                                <div class="row">
                                    <div class="col-md-12">
                                        <div class="form-group label-floating">
                                            <label class="control-label">Email</label>
                                            <input type="email" class="form-control" name="email" value="{{ old('email') }}" required>
                                        </div>
                                    </div>
                                </div>
                                <div class="row">
                                    <div class="col-md-12">
                                        <div class="form-group label-floating">
                                            <label class="control-label">Password</label>
                                            <input type="password" class="form-control" name="password" required>
                                        </div>
                                    </div>
                                </div>
                                <button type="submit" class="btn btn-primary">Login</button>
                                <a href="{{ route('homepage') }}" class="btn btn-danger">Back</a>
                            </form>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
@endsection

@push('scripts')

@endpush

CustomerLogController

<?php

namespace App\Http\Controllers;

use App\Category;
use App\Item;
use App\Slider;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AutenticatesUser;
use Illuminate\Support\Facades\Hash;
use Auth;
use Redirect;
use Session;
use Validator;
use Illuminate\Support\Facades\Input;
use Illuminate\Http\Request;
use Illuminate\Http\Response;

class CustomerLogController extends Controller
{


    use AutenticatesUser;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected function authenticated() {
    if($customers = Auth::customers()){
        return redirect()->route('homepage');
    }
}

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

    /**
     * Create a new controller instance.
     *
     * @return void
     */


    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $sliders = Slider::all();
        $categories = Category::all();
        $items = Item::all();
        return view('homepage',compact('sliders','categories','items'));
    }

       public function logout(Request $request)  {
        $this->guard()->logout();

        $request->session()->invalidate();

        return redirect('/');
 }
}

web. php

<?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::redirect('lara-admin','login');
Route::get('/','HomeController@index')->name('welcome');

Route::get ('/homepage', 'HomepageController@index')->name('homepage');
Route::post('/reservation','ReservationController@reserve')->name('reservation.reserve');
Route::post('/contact','ContactController@sendMessage')->name('contact.send');

Auth::routes();

Route::resource ('customerLogin', 'CustomerLoginController');
Route::post('homepage', 'CustomerLogController@index')->name('customerLogin');



Route::get('/logout', 'CustomerLogController@logout');

Route::group(['prefix'=>'admin','middleware'=>'auth','namespace'=>'Admin'], function (){
    Route::get('dashboard', 'DashboardController@index')->name('admin.dashboard');
    Route::resource('slider','SliderController');
    Route::resource('category','CategoryController');
    Route::resource('item','ItemController');
    Route::get('reservation','ReservationController@index')->name('reservation.index');
    Route::post('reservation/{id}','ReservationController@status')->name('reservation.status');
    Route::delete('reservation/{id}','ReservationController@destory')->name('reservation.destory');

    Route::get('contact','ContactController@index')->name('contact.index');
    Route::get('contact/{id}','ContactController@show')->name('contact.show');
    Route::delete('contact/{id}','ContactController@destroy')->name('contact.destroy');
});

Любая помощь будет высоко ценится!

1 Ответ

1 голос
/ 28 февраля 2020

В старой версии Laravel, когда мы создавали новые файлы аутентификации, у нас была та же проблема, что и у вас, - Auth::Check() не работала. Совсем. Не могу понять почему.

В итоге мы вручную проверили логин, убедившись в его правильности, с помощью Hash::check(), а затем обработали логин с помощью Auth::LoginUsingId().

if(Hash::check($password, $user->u_pass)){
    Auth::LoginUsingId($user->id);
    return redirect()->intended('/');
}

. На этом этапе все Auth:: функции работали как задумано.

Это было хакерское решение, но оно сработало.

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