Laravel 8 手动验证用户
请注意,你不是必须使用 Laravel Jetstream 附带的身份验证控制器。如果选择删除这些控制器,就需要直接使用 Lavarel 验证类。别担心,这很容易!
可以借助 Auth
facade 访问 Laravel 服务,因此需要在类的开头导入 Auth
。下面来看看 attempt
方法:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class LoginController extends Controller
{
/**
* 处理认证尝试
*
* @param \Illuminate\Http\Request $request
*
* @return Response
*/
public function authenticate(Request $request)
{
$credentials = $request->only('email', 'password');
if (Auth::attempt($credentials)) {
// 认证通过...
return redirect()->intended('dashboard');
}
}
}
attempt
方法的每个参数是一个关联数组。数组值用于在数据库中查找用户。在上面的例子中,将通过 email
列的值查找用户。如果找到该用户,将用存储在数据库中的哈希密码与数组中的 password
值做比较。不需要对 password
做哈希运算,框架在与数据库中的哈希密码做比较前自动对此值做哈希运算。如果两个哈希值匹配,将为该用户建立验证通过的 session。
如果验证成功, attempt
方法返回 true
,否则返回 false
。
重定向中的 intended
方法将经由身份验证中间件将用户重定向到身份验证前截获的 URL 。如果预期目标不存在,可以为此方法指定一个回退 URI 。