【发布时间】:2022-01-26 06:40:23
【问题描述】:
所以基本上我在付款后生成用户数据,它保存在我创建的表中,它有一个用户名和一个使用 Hash::make() 方法的加密密码。
我想做的是使用存储在数据库中的数据登录,所以我做了一个守卫。
这是带有保护的auth.php 文件:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'plataforma' => [
'driver' => 'session',
'provider' => 'usuario',
],
],
这些是提供者:
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
'usuario' => [
'driver' => 'eloquent',
'model' => App\Models\Usuario::class,
],
这是模型:
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class Usuario extends Authenticatable
{
use HasFactory;
use Notifiable;
protected $guard = 'plataforma';
protected $fillable = [
'nombre_usuario', 'correo', 'clave',
];
protected $hidden = [
'clave', 'remember_token',
];
}
最后是控制器:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class PlataformaController extends Controller
{
public function login()
{
return view('web.plataforma-login');
}
public function autenticar(Request $request)
{
if (Auth::guard('plataforma')->attempt(['nombre_usuario' => $request->input('nombre_usuario'), 'clave' => $request->input('clave')])) {
return view('web.plataforma');
} else {
dd(Auth::guard('plataforma')->attempt(['nombre_usuario' => $request->input('nombre_usuario'), 'clave' => $request->input('clave')]));
}
}
public function dashboard()
{
return view('web.plataforma');
}
}
所以基本上 Auth::guard('plataforma')->attempt(...) 返回 false,我已经检查了 $request->input(...) 的值是否正确,我检查了DB中的加密密码和用户用Hash::check()输入的密码是一样的,所以不知道哪里错了,好迷茫……
我花了很多时间阅读其他问题也没有解决方案,如果有人可以帮助我,我会很高兴。
【问题讨论】:
-
您的意思是您想使用从数据库获取的凭据进行自动登录?
-
我认为这与您选择的键名有关。
password似乎是硬编码的