***
這是我的LoginController.php :
。***
<?php
namespace AppHttpControllersAuth。
使用 AppHttpControllersController。
使用 IlluminateHttpRequest。
class LoginController extends Controller
{
public function login()
{
return view('auth.login')。
}
public function loginCheck(Request $request)
{
$this->validate($request,[
'email' => 'required|email',
'password' => 'required',
]);
if(!auth()-> attempt($request-> only('email','password')){
return back()->with('status','Invalid login details') 。
}
return redirect()-> route('dashboard')。
}
}
Login.blade.php - 設計
@extends('layouts.app')
@section('content')
<div class="flex justify-center" >
< div class="w-4/12 bg- white p-6 rounded-lg" >
@if (session('status')
< div class="bg- 紅色-500 p-4 圓形- lg mb-6 text- white text-center" >
{{ session('status') }}}。
</div>
@endif
<form action="{{ route('login')}}" method="post" >
@csrf
<div class="mb-4" >
<label for="email" class="sr-only" >Email</label>
<input type="text" name="email" id="email" placeholder="email"
class="bg-gray-100 border-2 w-full p- 4 rounded-lg @error('email) title">email') border-red-500 @enderror"
value="{{ old('email') }}">
@error('email')
<div class="text-red-500 mt-2 text=sm">{{ $message }}</div>
終止錯誤
</div>
<div class="mb-4">
<label for="password" class="sr-only"> Passowrd</label>
<輸入型別="password" name="password" id="password" placeholder="password"
class="bg-gray-100 border-2 w-full p-4 rounded-。 lg @error('password') border-red-500 @enderror"
value="{{ old('password') }}">
@error('password')
<div class="text-red-500 mt-2 text=sm">{{$message }}</div>
終止錯誤
</div>
<div class="mb-4">
< button type="submit" class="bg-blue-500 text-white px- 4 py-3 rounded font-medium w-full" > 登錄
</button>
</div>
</form>
</div>
</div>
@endsection
web.php -Routes
使用 Illuminate支持FacadesRoute。
use AppHttpControllersAuthRegisterController;
use AppHttpControllersAuthLoginController;
use AppHttpControllerDashboardController;
Route::get('/dashboard', [DashboardController::class, 'index'])-> name('dashboard')。
Route::get('/posts',[RegisterController::class, 'posts'])->name('post') 。
Route::get('/register',[RegisterController::class, 'registration'])->name('register') 。
Route::post('/register',[RegisterController::class, 'store'])。
Route::get('/login', [LoginController::class, 'login'])->name('login') 。
Route::post('/login', [LoginController::class, 'loginCheck'])。)
Route::get('/', function () {
return view('dashboard')。
});
即使我嘗試dd()。 它也會顯示錯誤,
auth()->user();在dashboard中顯示為null?
但是資料被存盤在MySql服務器中。 但不是auth()->attemp()->登錄。為什么?
在這里,我試圖將我的資料存盤到MySql服務器,當注冊為新用戶并直接登錄并重定向到儀表盤頁面時。
uj5u.com熱心網友回復:
上述情況似乎沒有任何問題。
檢查mysql的查詢日志,看看查詢是否正常進入。
uj5u.com熱心網友回復:
你的代碼在控制器中使用了Laravel刀片指令,而不是利用Laravel提供的Auth facade。
主要是,你應該在控制器的頂部添加use IlluminateSupportFacadesAuth;,然后切換到
if(! auth()->try($request->only('email','password'))){
return back()->with('status','Invalid login details') 。
}
to
if(! Auth::empt($request->only('email','password')){
return back()->with('status','Invalid login details') 。
}
然后您還應該考慮將auth中間件添加到您的Dashboard路由中。
關于在Laravel中手動認證用戶的進一步資訊可以在以下網站找到: https://laravel.com/docs/8.x/authentication#authenticating-users - 包括重新生成會話和適當的重定向,你應該把它添加到你的控制器中。
希望這有幫助! :D
uj5u.com熱心網友回復:
要在儀表盤中使用auth()->user(),你必須用Auth中間件保護到該頁面的路由。如果你不這樣做,它每次都會一直回傳空值
Route::get('/dashboard'/span>, [DashboardController:: class, 'index'])->middleware('auth')->name('dashboard') 。
另外,考慮在Auth嘗試后重新生成會話。為了安全起見
$request-> session()->regenerate()
我希望這有幫助。編碼愉快!
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/329596.html
標籤:
上一篇:哪一個字串是最長的
