对于我的网站,我希望有2位警卫:员工和客户。登录或注册时,总得到302。登录员工时:
Auth::guard('employee')->attempt(['username' => $request->username, 'password' => $request->password])
我弄错了。我检查了$ request,值正确。当我在没有警卫的情况下做同样的事情时,我收到一个错误,他无法在用户中找到用户名。因此,他使用后卫在右列中进行搜索,但仍然没有找到该列。用户名和密码的值在数据库中。但是,当我为它播种时,它没有被散列,因为我只是一个学生,而且都在测试环境中。可能有问题吗?我没有在此处发布中间件以及所有这些东西,因为当我执行上面的行代码的dd()时,我得到了“ false”,那么是否存在尝试或真正需要中间件这一行代码的问题? / p>
我的员工模型如下:
class Employee extends Authenticatable {
use Notifiable;
protected $guard = 'employee';
protected $fillable = [
'name', 'username', 'password',
];
protected $hidden = [
'password', 'remember_token',
]; }
auth.php(简短版本)
'guards' => [
'employee' => [
'driver' => 'session',
'provider' => 'employees',
],
'customer' => [
'driver' => 'session',
'provider' => 'customers',
]
],
'providers' => [
'employees' => [
'driver' => 'eloquent',
'model' => App\Employee::class,
],
'customers' => [
'driver' => 'eloquent',
'model' => App\Customer::class,
],
我的loginController
public function __construct()
{
$this->middleware('guest')->except('logout');
$this->middleware('guest:employee')->except('logout');
$this->middleware('guest:customer')->except('logout');
}
public function adminLogin(Request $request)
{
$this->validate($request, [
'username' => 'required',
'password' => 'required|min:6'
]);
if (Auth::guard('employee')->attempt(['username' => $request->username, 'password' => $request->password])) {
return redirect()->intended('/employee/overview');
}
return back()->withInput($request->only('username'));
}
我知道这个问题被问了很多,但是我搜索了很多却没有找到解决方案,并问了我的网络老师,但他也没有找到问题。我也许可以使用某些角色,但我发现自己愚蠢到无法做到。我只想学习正确使用警卫。
提前谢谢!
答案 0 :(得分:1)
问题是您的密码必须在日期库中散列
使用功能
$password=bcrypt($request['password']);
或
Hash::make($data['password'])
答案 1 :(得分:0)
在登录控制器中,按如下所示更改您的代码:
public function adminLogin(Request $request)
{
$this->validate($request, [
'username' => 'required',
'password' => 'required|min:6'
]);
if (Auth::guard('employee')->attempt(['username' => $request->input('username'), 'password' => $request->input('password')])) {
return redirect()->intended('/employee/overview');
}
return back()->withInput($request->only('username'));
}
答案 2 :(得分:0)
尝试函数,查找哈希密码。它需要输入密码,对其进行哈希处理,然后将其与数据库中的密码进行比较。所以当你在数据库中保存数据时,确保你这样做:
$user->password = Hash::make($request->password);
$user->save();