Laravel 5.6 Auth / admin显示空白页面(带有或不带有登录名)

时间:2018-07-26 17:58:36

标签: php laravel laravel-5 laravel-5.6

我是Laravel及其5.6版本的新手。 我在那边使用了几个命令来设置Auth登录。一切都很好。但是,当我上传到自己的实时服务器时,然后当我运行site.com/admin [对于非登录场景,应重定向到site.com/login]。但是我有一个空白页。当我运行site.com.login时,登录页面正在运行,并且我正在管理面板中进行工作。 我的问题是,为什么我的site.com/admin页为空白。所有其他页面都工作正常。

这是我的文件。

routes / web.php

Route::get('/', 'HomeController@index')->name('home');;
Route::get('view/{slug?}', 'HomeController@view');

Auth::routes();
Route::prefix('admin')->group(function () {
    Route::get('/', 'Admin\AdminController@admin_index')->name('admin_index');
    Route::get('/dashboard', 'Admin\AdminController@dashboard')->name('dashboard');

    Route::get('locations', 'Admin\LocationsController@locations')->name('locations');
    Route::get('add-location', 'Admin\LocationsController@add_location')->name('add-location');
    Route::post('submit-location', 'Admin\LocationsController@submit_location')->name('submit-location');

    Route::get('posts', 'Admin\PostsController@posts')->name('posts');
    Route::get('add-post', 'Admin\PostsController@add_post')->name('add-post');
    Route::post('submit-post', 'Admin\PostsController@submit_post')->name('submit-post');
});
Route::get('/clear-cache', function() {
    $exitCode = Artisan::call('cache:clear');
});
Route::get('/logout', '\App\Http\Controllers\Auth\LoginController@logout')->name('logout');

app / Http / Kernel.php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{
    /**
     * The application's global HTTP middleware stack.
     *
     * These middleware are run during every request to your application.
     *
     * @var array
     */
    protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \App\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
    ];

    /**
     * The application's route middleware groups.
     *
     * @var array
     */
    protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            // \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

        'api' => [
            'throttle:60,1',
            'bindings',
        ], 
    ];

    /**
     * The application's route middleware.
     *
     * These middleware may be assigned to groups or used individually.
     *
     * @var array
     */
    protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'is_admin' => \App\Http\Middleware\IsAdmin::class,
    ];
}

app / Http / isAdmin.php

namespace App\Http\Middleware;

use Closure;

class IsAdmin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        // return $next($request);
        if(auth()->user()->isAdmin()) {
            return $next($request);
        }
        return redirect('login');
        //return $next($request);
    }
}

AdminController.php

namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;  
use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;
class AdminController extends Controller {

    public function __construct(){

        $this->middleware('auth');
    }

    public function admin_index() {

        return view('admin.index');
    }

    public function dashboard() {

        return view('admin.dashboard');
    }

    public function admin() {

        return view('admin.index');
    }
}

我还能分享的其他任何东西,请告诉我。

2 个答案:

答案 0 :(得分:2)

更改:

Route::prefix('admin')->group(function () {
Route::get('/', 'Admin\AdminController@admin_index')->name('admin_index');
Route::get('/dashboard', 'Admin\AdminController@dashboard')->name('dashboard');

Route::get('locations', 'Admin\LocationsController@locations')->name('locations');
Route::get('add-location', 'Admin\LocationsController@add_location')->name('add-location');
Route::post('submit-location', 'Admin\LocationsController@submit_location')->name('submit-location');

Route::get('posts', 'Admin\PostsController@posts')->name('posts');
Route::get('add-post', 'Admin\PostsController@add_post')->name('add-post');
Route::post('submit-post', 'Admin\PostsController@submit_post')->name('submit-post');
});

收件人:

Route::group([
'middleware' => ['auth', 'is_admin'],
'namespace'  => 'Admin',
'prefix'     => 'admin',
], function () {
Route::get('/', 'AdminController@admin_index')->name('admin_index');
Route::get('/dashboard', 'AdminController@dashboard')->name('dashboard');

Route::get('locations', 'LocationsController@locations')->name('locations');
Route::get('add-location', 'LocationsController@add_location')->name('add-location');
Route::post('submit-location', 'LocationsController@submit_location')->name('submit-location');

Route::get('posts', 'PostsController@posts')->name('posts');
Route::get('add-post', 'PostsController@add_post')->name('add-post');
Route::post('submit-post', 'PostsController@submit_post')->name('submit-post');
});

并且:

if(auth()->user()->isAdmin()) {

收件人:

if(optional(auth()->user())->isAdmin()) {

请确保您的用户模型中具有isAdmin()函数,该函数返回truefalse

答案 1 :(得分:0)

您的问题是您没有使用isAdmin middleware。 您可以在途中使用middleware来检查管理员角色。