繁体   English   中英

Laravel 5.7 验证::检查

[英]Laravel 5.7 Auth::check

我正在为两个用户(管理员和客户)开发登录系统。 对于管理员,我使用了默认的 auth 文件,但为客户创建了新文件。 我的问题是auth::check对管理员有效,但对客户无效。 因此它不会查询数据库并登录任何电子邮件和任何密码。 我怎样才能解决这个问题?

客户登录.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

客户日志控制器

<?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('/');
 }
}

网页.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');
});

任何帮助将非常感激!

在旧版本的 Laravel 中,当我们创建新的身份验证文件时,我们遇到了与您相同的问题 - Auth::Check()不起作用。 在所有。 不知道为什么。

我们最终通过使用Hash::check()手动检查登录信息,确保它是正确的,然后使用Auth::LoginUsingId()处理登录信息。

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

此时,所有Auth::函数都按预期工作。

这是一个骇人听闻的解决方案,但确实有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM