laravel - Auth guard 仅在 laravel 中默认工作
问题描述
我是 laravel 的新手,所以请多多包涵。我正在尝试使用一个登录表单来实现多重身份验证,但我遇到了一些麻烦,因为 auth 防护仅适用于 auth.php 文件中的默认值。我在这里尝试了很多解决方案,但它们似乎没有用。我能做些什么?
我的 auth.php 文件
<?php
return [
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
'employee' => [
'driver' => 'session',
'provider' => 'employees',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'employees' => [
'driver' => 'eloquent',
'model' => App\Employee::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
],
'employees' => [
'provider' => 'employees',
'table' => 'password_resets',
'expire' => 60,
],
],
];
我的登录控制器
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
use AuthenticatesUsers;
protected $redirectTo = '/dashboard';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
}
}
我在 AuthenticatesUsers 特征中的 AttemptLogin 函数
protected function attemptLogin(Request $request)
{
$userAttempt = $this->guard()->attempt(
$this->credentials($request), $request->filled('remember')
);
if(!$userAttempt){
$this->checkUser = "employee";
return $this->employeeGuard()->attempt(
$this->credentials($request), $request->filled('remember')
);
}
return $userAttempt;
}
我的模型
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
class Employee extends Authenticatable
{
use Notifiable;
protected $guard = "employees";
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'firstname', 'surname', 'DOB', 'gender', 'mobile_number',
'job_title','job_sector',
'highest_qualification', 'experience', 'short_description',
'relocation_willingness',
'salary_range', 'city', 'cv', 'five_tag_summation', 'email',
'password',
];
protected $hidden = [
'password', 'remember_token',
];
protected $casts = [
'email_verified_at' => 'datetime',
];
}
我的路线
Route::get('/', 'PagesController@index');
Route::get('/about', 'PagesController@about');
Route::get('/services', 'PagesController@services');
Route::get('/blog', 'PagesController@blog');
Route::resource('posts', 'PostsController');
Route::resource('jobs', 'JobsController');
Route::get('/users/{id}/{name}', function ($id, $name) {
return "This is user ".$id." with the name ".$name;
});
Route::get('/employeeRegister', 'Auth\EmployeeRegController@showRegistration');
Route::post('/employeeRegister', 'Auth\EmployeeRegController@register')->name('employeeRegister');
Auth::routes();
Route::get('/dashboard', 'DashboardController@index');
解决方案
推荐阅读
- asp.net-core - Asp.Net 核心个人用户身份验证登录/注册页面
- powershell - 如何在 cd -path 中正确调用嵌套对象变量?
- go - 在 kubernetes API 中是否有一个通过注解获取所有服务的函数
- jquery - 如何访问json中的数据
- c# - 在c#中连接后立即关闭Websocket连接
- wordpress - 如何编辑 Wooсommerce 管理员“添加费用”公式?
- laravel - 外键插入失败
- java - Android提取对象数组的属性数组
- python - 如何获取 os.listdir('filepath') 中的最新文件?
- bash - 如何使用 djpeg 和 pnmtopng 将 jpeg 转换为 png?