Laravel 5.5多重身份验证路由错误登录表单显示

时间:2017-11-22 14:09:25

标签: php laravel-5.5

我正在尝试使用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路由使用正确的中间件......我想......也许?

1 个答案:

答案 0 :(得分:1)

之前我遇到过同样的问题,之后又得到了解决方案。 实际上我提交的错误,我认为你可能已经做了一个名为Admin的文件夹,其中没有登录文件,因此输入/ admin / login使laravel在那里查找文件,想念它和然后转到默认登录文件。什么解决了我的问题是重命名文件夹,一切正常。如果你犯了同样的错误,试试这个