我試圖在控制器上檢查路線,表單上的 action="login" ,一切都正確。我嘗試了不同的代碼撰寫方式,例如 Auth::Attempt 以及 auth()->attempt()。我嘗試查看的其他內容是使用受保護的 $guarded = [] 或受保護的 $fillable = ['name', 'email', 'password', 'username']在User模型上。我也嘗試使用Hash::make方法對密碼進行哈希處理,以確保新創建帳戶的密碼正確,但仍然無法正常作業。
我的注冊頁面運行良好,它將我重定向到主頁。我將它與我的登錄頁面進行了比較,并嘗試對其進行調整。不知何故,它仍然無法正常作業。請幫忙。我需要在下周星期二之前完成一個專案。我現在的日程安排很緊。
路線代碼
Route::get('/', function () {
return view('home');
});
Route::get('/record', function () {
return view('record');
});
Route::get('/profile', function () {
return view('profile');
});
Route::get('register', [RegisterController::class, 'create'])->middleware('guest');
Route::post('register', [RegisterController::class, 'store'])->middleware('guest');
Route::get('login', [SessionsController::class, 'create'])->middleware('guest');
Route::post('session', [SessionsController::class, 'store'])->middleware('guest');
Route::post('logout', [SessionsController::class, 'destroy'])->middleware('auth');
SessionController 頁面(登錄)
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
use Illuminate\Http\Request;
class SessionsController extends Controller
{
public function create()
{
return view('sessions.create');
}
public function store()
{
$attributes = request()->validate([
'email' => 'required|email',
'password' => 'required'
]);
if (auth()->attempt($attributes)) {
return redirect('/')->with('success', 'Your account has been created.');
}
return redirect('/')->with('errors', 'Authentication failed.');
}
public function destroy()
{
auth()->logout();
redirect('/')->with('success', 'Goodbye');
}
}
主頁
<x-layout>
<div id="sidebar" class="bg-gray-100 border border-black border-opacity-5 w-96 py-8 px-8 mt-16 text-white">
<div class="relative flex lg:inline-flex items-center border border-gray-400 rounded-l px-3 py-3 text-white">
<form method="GET" action="/">
<input type="text" name="search" placeholder="Search Staff" class="bg-transparent placeholder-gray font-semibold text-sm" value="{{ request('search') }}">
</form>
</div>
<div hljs-number">100 rounded-xl">
<x-category-dropdown />
</div>
</div>
</x-layout>
注冊控制器
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
class RegisterController extends Controller
{
public function create()
{
return view('register.create');
}
public function store()
{
$attributes = request()->validate([
'name' => 'required|max:255',
'username' => 'required|min:3|max:255|unique:users,username',
'email' => 'required|email|max:255|unique:users,email',
'password' => 'required|min:7|max:255',
]);
$attributes['password'] = Hash::make($attributes['password']);
$user = User::create($attributes);
auth()->login($user);
return redirect('/')->with('success', 'Your account has been created.');
}
}
登錄表單
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Attendance Management System</title>
<!-- CSRF Token -->
<meta name="csrf-token" content="{{ csrf_token() }}">
<link rel="stylesheet" href="styles.css">
<link href="https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/gh/alpinejs/[email protected]/dist/alpine.min.js" defer></script>
</head>
<section class="px-6 py-8">
<main class="max-w-lg mx-auto mt-10 bg-gray-100 border border-gray-200 p-6 rounded-xl">
<h1 class="text-center font-bold text-xl">Log In!</h1>
<form method="POST" action="/session" class="mt-10">
@csrf
<div class="mb-6">
<label class="block mb-2 uppercase font-bold text-sm text-gray-700" for="email">
Email
</label>
<input class="border border-gray-400 p-2 w-full" type="email" name="email" id="email" value="{{ old('email') }}" required>
@error('email')
<p hljs-number">500 text-sm mt-2">{{ $message }}</p>
@enderror
</div>
<div hljs-number">6">
<label hljs-number">2 uppercase font-bold text-sm text-gray-700" for="password">
Password
</label>
<input hljs-number">400 p-2 w-full" type="password" name="password" id="password" required>
@error('password')
<p hljs-number">500 text-sm mt-1">{{ $message }}</p>
@enderror
</div>
<div>
<button type="submit" hljs-number">400 text-white rounded py-2 px-4 hover:bg-blue-500">
Submit
</button>
</div>
</form>
</main>
</section>
uj5u.com熱心網友回復:
創建新用戶時,您沒有對用戶密碼進行哈希處理。Auth::Attempt() 函式獲取您提供的明文密碼并對其進行 Hash::make() 呼叫。
因此,當您登錄時,它會獲取明文密碼,對其進行哈希處理并將其與資料庫中的明文值進行比較。
因此,在創建用戶時,在將密碼值傳遞給 creat 函式之前對其進行哈希處理。在您驗證輸入哈希后,密碼并將其添加回您的 $attributes:
$attributes[‘password’] = Hash::make($attributes[‘password’]);
$user = User::create($attributes);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/520703.html
上一篇:springboot只要求登錄一次并保持登錄狀態,即使我重新加載它
下一篇:如何創建用于身份驗證的中間件
