我正在尝试使用Laravel多重身份验证来处理我的一个项目。我尝试了很多东西,但我一直陷入困境。我目前有两个防护定义,两个模型,两个登录控制器等。
如果我去/登录 - 按预期工作
如果我去/ home(没有登录) - 我会按预期重定向到登录页面
如果我去/注册 - 按预期工作
如果我转到/ admin / login - 我会看到默认的登录表单而不是管理员登录表单
如果我转到/ admin / admin / login - 我会看到正确的管理员登录表单
我的路线档案:
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Route::prefix('admin')->group(function() {
Route::get('/login', 'Auth\AdminLoginController@showLoginForm')->name('admin.login');
Route::post('/login', 'Auth\AdminLoginController@login')->name('admin.login.submit');
Route::get('/', 'AdminController@index')->name('admin.dashboard');
});
这是我的Auth文件:
return [
// Authentication Defaults
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
// Authentication Guards
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
'admin-api' => [
'driver' => 'token',
'provider' => 'admins',
],
],
// User Providers
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admins' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
],
],
// Resetting Passwords
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
],
'admins' => [
'provider' => 'admins',
'table' => 'password_resets',
'expire' => 30,
],
],
];
这是我的adminLoginController文件:
<?php
namespace App\Http\Controllers\Auth;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class AdminLoginController extends Controller
{
public function __construct() {
$this->middleware('guest:admin');
}
public function showLoginForm() {
return view('auth.admin-login');
}
public function login(){
//validate the form data
// atttempt to log in the user
// if successful redirect to their admin dashboard
// if unsuccessful then redirect back to the login
}
}
我确定我错过了什么。这可能很简单但却拖延了我的进步。其他一切都有效。它只是让/ admin路由使用正确的中间件......我想......也许?
答案 0 :(得分:1)
之前我遇到过同样的问题,之后又得到了解决方案。 实际上我提交的错误,我认为你可能已经做了一个名为Admin的文件夹,其中没有登录文件,因此输入/ admin / login使laravel在那里查找文件,想念它和然后转到默认登录文件。什么解决了我的问题是重命名文件夹,一切正常。如果你犯了同样的错误,试试这个