Laravel中做登录,真的太简单了,框架已经集成了大多数的功能,我们只需要把相关数据传递过去即可。代码如下:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class LoginController extends Controller
{
public function index()
{
// 如果用户已登录,则直接跳转到之前页面
if (Auth::check()) {
return redirect(url()->previous());
}
return view('login');
}
public function login(Request $request)
{
$credentials = $request->validate([
'username' => ['required'],
'password' => ['required'],
]);
if (Auth::attempt($credentials, $request->remember)) {
$request->session()->regenerate();
return redirect()->intended();
}
return back()->withErrors([
'loginError' => '用户名或密码不正确。',
])->onlyInput('username');
}
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/')->with('success', '退出成功!');
}
}
相应的路由如下:
Route::get('/login', [LoginController::class, 'index'])->name('login.index');
Route::post('/login', [LoginController::class, 'login'])->name('login');
Route::get('/logout', [LoginController::class, 'logout'])->middleware('auth')->name('logout');
本文为“技术点滴”的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。