laravel8 Auth登录 + 路由中间件auth验证
在Laravel 8中,您可以使用Laravel的内置Auth系统来处理登录,并使用路由中间件来确保某些路由只能被认证用户访问。以下是实现这一功能的步骤和示例代码:
- 使用Laravel的内置认证系统生成用户和认证表:
php artisan make:auth
- 创建一个路由中间件来检查用户是否已经通过认证:
// 在 app/Http/Middleware/ 目录下创建 AuthCheck.php
php artisan make:middleware AuthCheck
- 编辑
AuthCheck
中间件以检查用户是否已经登录:
// app/Http/Middleware/AuthCheck.php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class AuthCheck
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
if (!Auth::check()) {
return redirect('/login'); // 如果用户未登录,重定向到登录页面
}
return $next($request); // 如果用户已登录,继续请求的处理
}
}
- 注册中间件在
app/Http/Kernel.php
:
// app/Http/Kernel.php
protected $routeMiddleware = [
// ...
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'auth.check' => \App\Http\Middleware\AuthCheck::class, // 注册刚刚创建的中间件
];
- 使用中间件来保护路由:
// 在 routes/web.php 中使用中间件
Route::get('/dashboard', function () {
return view('dashboard');
})->middleware('auth.check'); // 使用自定义的auth.check中间件
现在,当用户尝试访问 /dashboard
路由时,会通过 AuthCheck
中间件进行验证,如果用户未登录,将会被重定向到登录页面。如果用户已经登录,将能够正常访问该路由。
评论已关闭